//http://tb1.bdstatic.com/??/tb/_/tool_696c6e8.js,/tb/_/loader_12d7714.js,/tb/_/tpl_async_15_395293f.js,/tb/_/loader_630632a.js,/tb/_/like_tip_4f71dda.js,/tb/_/poster/post_service_4032c7d.js,/tb/_/poster/topic_suggestion_4827396.js,/tb/_/poster/post_prefix_50ae20e.js,/tb/_/word_limit_47b28de.js,/tb/_/poster/post_manager_968b3bd.js,/tb/_/complaint_bar_owner_5356b96.js,/tb/_/bubble_tip_8091dc2.js,/tb/_/poster/rich_poster_4cc09ee.js,/tb/_/ueditor_base_634b3f5.js,/tb/_/ueditor_extend_base_29960fa.js,/tb/_/background_5c34c50.js,/tb/_/auto_link_e48bd2b.js,/tb/_/tb_gram_a17c017.js,/tb/_/slide_select_cdc6bf0.js,/tb/_/image_flash_editor_96f9f79.js,/tb/_/scroll_panel_0150f9a.js,/tb/_/image_exif_285bafe.js,/tb/_/image_uploader_3de9609.js,/tb/_/image_uploader_manager_5464722.js,/tb/_/picture_uploader_3ea0841.js

_.Module.define({
	path: "adsense-async/widget/tool",
	requires: [],
	sub: {
		initial: function(e) {
			this.extraData = e
		},
		genMd5: function(e) {
			var t = "AS" + this.genRandChar(),
				a = (new Date).getTime();
			return t + e.substr(-3) + ("" + a).substr(-6)
		},
		genQaClassName: function() {
			return "1" == $.tb.location.getSearchValue("__qa_page_diff") ? "__qa_page_diff" : ""
		},
		genRandChar: function() {
			var e = "abcdefghijklmnopqrstuvwxyz";
			return e[this._randomInt(0, e.length - 1)]
		},
		_randomInt: function(e, t) {
			return e -= 1, Math.ceil(e + Math.random() * (t - e))
		},
		getStatsUrl: function(e, t) {
			var a;
			return a = t.click_url_params ? this.getUrl({
				url: "/link",
				tbjump: t.click_url_params,
				extra: {
					obj_id: t.id
				}
			}) : e
		},
		getUrl: function(e) {
			var t = $.getPageData("forum"),
				a = $.getPageData("user"),
				r = e.url ? e.url : "",
				n = $.getPageData("product", ""),
				i = ["client_type=pc_web", "tbjump=" + (e.tbjump ? e.tbjump : ""), "task=" + (e.task ? e.task : ""), "locate=" + (e.locate ? e.locate : ""), "page=" + (e.page ? e.page : "" != n ? n : "MODULE_NAME"), "type=click", "fid=" + (t.id ? t.id : ""), "fname=" + (t.name ? t.name : ""), "uid=" + (a.id ? a.id : ""), "uname=" + (a.name ? a.name : ""), "is_new_user=" + (a.is_new_user ? a.is_new_user : ""), "_t=" + (new Date).getTime()];
			return e.extra && $.each(e.extra, function(e, t) {
				i.push(e + "=" + t)
			}), r + "?" + i.join("&")
		},
		getDirInfo: function() {
			var e = this.extraData;
			return {
				forum_dir: $.getPageData("forum.first_class", ""),
				forum_second_dir: $.getPageData("forum.second_class", ""),
				forum_vdir: $.getPageData("forum_vdir", "", e)
			}
		},
		getSpecialInfo: function(e) {
			for(var t = this.extraData, a = {}, r = 0, n = e.length; n > r; r++) a[e[r]] = t[e[r]];
			return a
		}
	}
});
_.Module.define({
	path: "adsense-base/widget/loader",
	requires: ["tbui/widget/messenger"],
	sub: {
		adStatus: {},
		initial: function(e) {
			e && e.adValue && 1001 === e.adValue.goods_info[0].goods_style && this.adEmptyAls(e.adValue), e && (this.whiteList = e.whiteList), this._initMessenger()
		},
		adBlockDet: function(e, t) {
			if("undefined" == typeof document.body) return !0;
			var a = "v1.0",
				n = document.createElement("DIV");
			t = t || "sponsorText", n.id = t, n.style.position = "absolute", n.style.left = "-999px", n.appendChild(document.createTextNode("&nbsp;")), document.body.appendChild(n), setTimeout(function() {
				if(n) {
					var t = 0 === n.clientHeight;
					try {} catch(i) {
						window.console && window.console.log && window.console.log("ADBlock detection error:", i)
					}
					e(t, a), document.body.removeChild(n)
				}
			}, 175)
		},
		_getAdLocName: function(e) {
			return [e.client_type, e.page_name, e.pos_name].join("_")
		},
		adDomMap: function() {
			var e = {},
				t = function(t, a) {
					e[t] = a
				},
				a = function(t) {
					return e[t] || $("")
				};
			return {
				add: t,
				get: a
			}
		}(),
		loadAD: function(e, t, a) {
			try {
				var n = e.adData || {},
					i = e.className || "",
					o = e.asyncHTML || "",
					r = (e.isProxy || !1, e.isAsync || !1),
					d = e.isIframe || !1,
					s = e.needStats || !1;
				$.extend(n, {
					className: i
				});
				"function" == typeof t && (a = t, t = {});
				var c = null;
				if(r) {
					if(c = $(o), !c) return;
					this._renderDOM(n, c)
				} else c = $("." + i);
				if(d) {
					var u = $.getPageData("goods_info.0.iframe_url", "", n),
						l = this._getIframeParams(n, t);
					if(!u) return;
					this._loadIframe(c, u, l), this.adDomMap.add(n.id, c)
				} else r && c.show();
				"function" == typeof a && a(c), s && this._clickStats(c, n), this._viewStats(c, n)
			} catch(f) {}
		},
		_logger: function(e, t) {
			var a = this,
				n = this._getStatsParams(t);
			a._track($.extend({}, n, {
				locate: t.pos_name,
				da_locate: t.pos_name,
				type: e,
				da_type: e
			}))
		},
		_renderDOM: function(e, t) {
			var a = e.load_type;
			$(e.locator).length > 0 && a ? $(e.locator)[a](t) : this._track(e.id + "\uff1a\u65e0\u5b9a\u4f4d\u5143\u7d20", "\u5e7f\u544a\u52a0\u8f7d\u5931\u8d25")
		},
		_getStatsParams: function(e) {
			var t = $.getPageData,
				a = "",
				n = {
					client_type: "pc_web",
					task: "tbda",
					page: PageData.page.toLowerCase(),
					fid: PageData.forum.id,
					tid: t("thread.thread_id", a),
					uid: PageData.user.id,
					da_task: "tbda",
					da_fid: PageData.forum.id,
					da_tid: t("thread.thread_id", a),
					da_uid: PageData.user.id,
					da_page: PageData.page.toLowerCase(),
					da_page_num: e.page_number || "",
					da_type_id: e.typeid || "",
					da_obj_id: e.id || "",
					da_good_id: e.goods_info[0].id || "",
					da_obj_name: e.name || "",
					da_first_name: e.first_name || "",
					da_second_name: e.second_name || "",
					da_cpid: e.cpid || "",
					da_abtest: e.abtest || "",
					da_price: e.price || "",
					da_verify: e.verify || "",
					da_plan_id: e.plan_id || "",
					da_ext_info: e.ext_info || "",
					da_client_type: e.client_type || "",
					da_throw_type: e.throw_type || "",
					da_loc_index: e.loc_index || ""
				};
			return n
		},
		_getIframeParams: function(e, t) {
			var a, n, i, o = $.getPageData,
				r = {
					dapage: PageData.page.toUpperCase(),
					dafid: PageData.forum.id,
					datid: o("thread.thread_id", 0),
					dauid: PageData.user.id || 0,
					datypeid: e.typeid,
					daid: e.id,
					dacssclass: e.className,
					dagoodid: e.goods_info[0].id,
					token: e.zhixin_token,
					daname: encodeURIComponent(e.name),
					dafirstname: encodeURIComponent(e.first_name),
					dasecondname: encodeURIComponent(e.second_name),
					dacpid: e.cpid,
					daabtest: e.abtest,
					daprice: e.price,
					daverify: e.verify,
					daplanid: e.plan_id,
					daserid: e.user_id,
					dathrowtype: e.throw_type,
					title: PageData.forum.name || "",
					url: encodeURIComponent($.tb.location.getHref())
				},
				d = {},
				s = {},
				c = e.goods_info[0].url_query;
			try {
				s = $.json.decode($.tb.unescapeHTML(c));
				for(a in s)
					if(s.hasOwnProperty(a))
						if("custom" == a) {
							for(n in s[a])
								if(s[a].hasOwnProperty(n)) switch(n) {
									case "zhixintoken":
										i = s[a][n], d[i] = e.zhixintoken;
										break;
									case "forumNameGBK":
										i = s[a][n], d[i] = e.forumNameGBK
								}
						} else if("throw_thread" == a)
					for(n in s[a]) s[a].hasOwnProperty(n) && (i = s[a][n], d[i] = e[n]);
				else
					for(n in s[a]) s[a].hasOwnProperty(n) && (i = s[a][n], "forum" === a && "forum_name" === n && (n = "name"), d[i] = encodeURIComponent(o(a + "." + n)))
			} catch(u) {}
			return $.extend(!0, r, d || {}, t || {}), r.length > 900 && (r = r.substring(0, 900)), r
		},
		_loadIframe: function(e, t, a) {
			var n = this._addParam(t, a),
				i = e.find(".iframe_wrapper"),
				o = '<iframe src="' + n + '" scrolling="no" frameborder="0"></iframe>';
			i.append(o)
		},
		_initMessenger: function() {
			var e = $.getPageData("adsense.messenger", null, window);
			if(!e) try {
				e = this.requireInstance("tbui/widget/messenger", ["parent", "checkStatus"]), e.registerOrigin(this._getMessengerWhitelist(this.whiteList)), e.registerCommand({
					comforum_adsense: $.proxy(this._handleMessengerData, this)
				}), window.adsense = {
					messenger: e,
					iframeApiUrl: "//tb1.bdstatic.com/tb/_/iframe_api_7e50cb3.js"
				}
			} catch(t) {}
		},
		_getMessengerWhitelist: function(e) {
			try {
				var t = 0,
					a = [],
					n = e.length;
				for(t; n > t; t++) a.push(e[t][0]);
				return a
			} catch(i) {}
		},
		_handleMessengerData: function(e) {
			var t = this.adDomMap.get(e.id);
			if(t) {
				var a = t.find(".iframe_wrapper");
				"success" === e.status ? (e.height < a.height() && a.height(e.height), t.removeClass("hide_style").show()) : t.slideUp()
			}
		},
		_addParam: function(e, t) {
			var a = "",
				n = [],
				i = -1 === e.indexOf("?") ? "?" : "&";
			for(var o in t) t.hasOwnProperty(o) && n.push(o + "=" + t[o]);
			return a = n.join("&"), e + i + a
		},
		_clickStats: function(e, t) {
			var a = this,
				n = this._getStatsParams(t);
			t.imTimeSign && Number(t.imTimeSign) && a.ck(e.find(".j_click_stats"), t.imTimeSign), e.on("click", ".j_click_stats", function() {
				var e = $(this).data("locate") ? "_" + $(this).data("locate") : "",
					i = t.pos_name + e;
				a._track($.extend({}, n, {
					locate: i,
					da_locate: i,
					type: "click",
					da_type: "click"
				})), a._track($.extend({}, n, {
					locate: i,
					da_locate: i,
					type: "click",
					da_type: "click"
				}), "/billboard/pushlog/?"), a._track($.extend({}, n, {
					locate: i,
					da_locate: i,
					type: "click",
					da_type: "click",
					baiduid: $.cookie("BAIDUID") || ""
				}), "//als.baidu.com/dalog/logForW?")
			})
		},
		_viewStats: function(e, t) {
			var a = this,
				n = !1,
				i = null,
				o = this._getStatsParams(t),
				r = (this._getAdLocName(t), $.extend({}, o, {
					locate: t.pos_name,
					da_locate: t.pos_name,
					type: "show",
					da_type: "show"
				}), function() {
					n || (a._track($.extend({}, o, {
						locate: t.pos_name,
						da_locate: t.pos_name,
						type: "show",
						da_type: "show"
					})), a._track($.extend({}, o, {
						locate: t.pos_name,
						da_locate: t.pos_name,
						type: "show",
						da_type: "show"
					}), "/billboard/pushlog/?"), a._track($.extend({}, o, {
						locate: t.pos_name,
						da_locate: t.pos_name,
						type: "show",
						da_type: "show",
						baiduid: $.cookie("BAIDUID") || ""
					}), "//als.baidu.com/dalog/logForW?"), a.adBlockDet(function(e) {
						e && -1 !== "p0001,p0004,p0239,p0006,p0253,p0242".split(",").indexOf(t.loc_code)
					}), n = !0)
				}),
				d = function() {
					var t = e.offset().top,
						a = e.offset().top + e.height(),
						n = $(window).scrollTop(),
						i = $(window).height() + n,
						o = !1;
					return(t > n && i >= t || a > n && i >= a) && (o = !0), o
				},
				s = $.getPageData("goods_info.0.statsCommand", null, t);
			s ? this.observe(s, function() {
				d() && (clearTimeout(i), i = setTimeout(r, 200))
			}) : d() ? r() : ($(window).on("scroll", function() {
				d() && (clearTimeout(i), i = setTimeout(r, 200))
			}), d() && (clearTimeout(i), i = setTimeout(r, 200)), $(window).on("scroll"))
		},
		adEmptyAls: function(e) {
			var t = this._getStatsParams(e);
			this._track($.extend({}, t, {
				locate: e.pos_name,
				da_locate: e.pos_name,
				type: "show",
				da_type: "show",
				baiduid: $.cookie("BAIDUID") || ""
			}), "//als.baidu.com/dalog/logForW?")
		},
		_track: function(e, t) {
			if(document.images) {
				var a = new Image;
				window["bd_pv_" + (new Date).getTime()] = a;
				var n = t || ("https:" === location.protocol ? "https://gsp0.baidu.com/5aAHeD3nKhI2p27j8IqW0jdnxx1xbK/tb/img/track.gif?" : "http://static.tieba.baidu.com/tb/img/track.gif?"),
					i = ["t=" + (new Date).getTime(), "r=1" + Math.random().toString().slice(2, 17)];
				for(var o in e) e.hasOwnProperty(o) && i.push(o + "=" + encodeURIComponent(e[o]));
				a.onload = a.onerror = function() {
					a = null
				}, a.src = n + i.join("&")
			}
		},
		loadCustomJS: function(e) {
			var t = null;
			e.js && (t = $.proxy(new Function("$e", "PageData", "window", e.js), {}), t(e.dom, void 0, void 0))
		},
		htmlEnDeCode: function() {
			function e() {
				r = {}, d = {}, t({
					"&amp;": "&",
					"&gt;": ">",
					"&lt;": "<",
					"&quot;": '"',
					"&#39;": "'"
				})
			}

			function t(e) {
				var t, a, n = [],
					s = [];
				for(t in e) a = e[t], d[t] = a, r[a] = t, n.push(a), s.push(t);
				i = new RegExp("(" + n.join("|") + ")", "g"), o = new RegExp("(" + s.join("|") + "|&#[0-9]{1,5};)", "g")
			}

			function a(e) {
				var t = function(e, t) {
					return r[t]
				};
				return e ? String(e).replace(i, t) : e
			}

			function n(e) {
				var t = function(e, t) {
					return t in d ? d[t] : String.fromCharCode(parseInt(t.substr(2), 10))
				};
				return e ? String(e).replace(o, t) : e
			}
			var i, o, r, d;
			return e(), {
				htmlEncode: a,
				htmlDecode: n
			}
		}(),
		ck: function() {
			function e() {
				var e = $.href,
					a = $.getAttribute(x),
					n = t(e);
				return n = n || t(a)
			}

			function t(e) {
				if(!e) return !1;
				var t = D.exec(e) || k.exec(e);
				return t ? D.exec(e) ? t[1].length < 20 ? t[1] : t[1].substr(0, 20) : t[1] : !1
			}

			function a(t) {
				var a = e();
				if(a !== !1) {
					var i = r(a, t);
					n(i)
				}
			}

			function n(e) {
				var t = "&ck=" + [e, m, b, Math.round(_), Math.round(p), Math.round(f), Math.round(h), y].join("."),
					a = $.href,
					n = $.getAttribute(x);
				a && ($.href = o(a, t) + i(a)), n && $.setAttribute(x, o(n, t) + i(n))
			}

			function i(e) {
				var t = "";
				if(-1 === e.indexOf("&shh=") && -1 === e.indexOf("?shh=") && (t = "&shh=" + location.hostname), -1 === e.indexOf("&sht=") && -1 === e.indexOf("?sht=")) {
					var a = location.href.match(P);
					a && (t += "&sht=" + a[1])
				}
				return t
			}

			function o(e, a) {
				return t(e) && (-1 == e.indexOf("&ck=") ? e += a : e = e.replace(/&ck=[\d.]*/, a)), e
			}

			function r(e, t) {
				for(var a = 0, n = 0; m * t % 99 + 9 > n; n++) a += e.charCodeAt(b * n % e.length);
				return a
			}

			function d(e) {
				e = e || window.event, m++, void 0 === f && (f = e.clientX), void 0 === h && (h = e.clientY), g = (new Date).getTime()
			}

			function s(e, t) {
				for(e = e || window.event, $ = e.target || e.srcElement; $ && "A" != $.tagName;) $ = $.parentNode;
				w = (new Date).getTime(), b = 9999, _ = e.clientX, p = e.clientY, y = 0 === g ? 0 : w - g, a(t)
			}

			function c(e, t) {
				v = (new Date).getTime(), b = v - w, a(t)
			}

			function u(e, t, a) {
				var n, i, o;
				for(o in t) n = t[o], i = a[o], window.attachEvent ? e.attachEvent("on" + n, i) : e.addEventListener(n, i, !1)
			}

			function l(e) {
				return [function(e) {
					d(e)
				}, function(t) {
					s(t, e)
				}, function(t) {
					c(t, e)
				}]
			}
			var f = void 0,
				h = void 0,
				_ = 0,
				p = 0,
				m = 0,
				g = 0,
				w = 0,
				v = 0,
				y = 0,
				b = 0,
				$ = 0,
				D = /link\?url\=([^\&]+)/,
				k = /\?url\=([^\.]+)\./,
				x = "data-cklink",
				P = /[?&]tn=([^&]*)/,
				I = function(e, t) {
					void 0 === e.length && (e = [e]);
					for(var a = e.length, n = 0, i = l(t); a > n; n++) u(e[n], ["mouseover", "mousedown", "mouseup"], i)
				};
			return I
		}(),
		allPost: function() {
			var e = $(".j_thread_list");
			if(e.length) {
				var t = {},
					a = [],
					n = function() {
						var e = $.cookie("BAIDUID") || "";
						if(e) {
							t = {};
							for(var a = e.substr(0, 32), n = function(e) {
									return e = (e + "").replace(/[^a-f0-9]/gi, ""), parseInt(e, 16)
								}, i = new Date, o = i.getFullYear(), r = i.getMonth(), d = i.getDate(), s = Math.round((new Date).getTime() / 1e3), c = new Date(o, 1, 1, 0, 0, 0, 0).getTime() / 1e3, u = parseInt((s - c) / 86400), l = "", f = 0; 8 > f; f++) {
								var h = parseInt(n(a.substr(4 * f, 4)) % 10) + "";
								l += h
							}
							l = Number(l) + 48 * u;
							var _ = parseInt(l % 2e3);
							if(0 > _ || _ >= 48) return !1;
							var p = 1;
							1 == parseInt(_ % 2) && (p = 2);
							var m = parseInt(_ / 2),
								g = m + 1,
								w = new Date(o, r, d, m, 0, 0, 0).getTime() / 1e3,
								v = new Date(o, r, d, g, 0, 0, 0).getTime() / 1e3;
							return v > (s > w) ? (t = {
								eid: p
							}, !0) : !1
						}
					},
					i = function(n) {
						if(n && "show" != n || $.each(e, function() {
								if("_show" === $(this).tbattr("showed")) {
									$(this).tbattr("showed", "true");
									var t = e.index($(this)) + 1,
										n = $(this).data("field").id;
									a.push({
										locate: t,
										tid: n
									})
								}
							}), "click" == n) {
							var i = e.eq(a[0].locate - 1).find(".threadlist_title a");
							if(i.tbattr("clicked")) return !1;
							i.tbattr("clicked", "true")
						}
						if(PageData.forum) var o = PageData.forum.first_class,
							r = PageData.forum.second_class,
							d = PageData.forum.id;
						n = "click" === n ? 2 : 3;
						({
							productId: 2,
							_client_type: 0,
							cuid: $.cookie("BAIDUID") || "",
							da_type: n,
							da_page: "FRS",
							da_menu1: o,
							da_menu2: r,
							fid: d,
							ext_info: $.json.encode(t),
							infos: $.json.encode(a)
						})
					},
					o = function() {
						var t = function() {
								a = [];
								var t = !1;
								return $.each(e, function() {
									var e = $(this).offset().top,
										a = $(this).offset().top + $(this).height(),
										n = $(window).scrollTop(),
										i = $(window).height() + n;
									(e > n && i >= e || a > n && i >= a) && ($(this).tbattr("showed") || ($(this).tbattr("showed", "_show"), t = !0))
								}), t
							},
							o = null;
						$(window).on("scroll", function() {
							n() && t() && (clearTimeout(o), o = setTimeout(i, 200))
						}), n() && t() && (clearTimeout(o), o = setTimeout(i, 200)), $(window).on("scroll")
					},
					r = function() {
						e.find(".threadlist_title a").on("click", function() {
							$(this).tbattr("clicked") || (a = [], a.push({
								locate: e.index($(this).parents(".j_thread_list")) + 1,
								tid: $(this).parents(".j_thread_list").data("field").id
							}), i("click"))
						})
					};
				o(), r()
			}
		}
	}
});
_.Module.define({
	path: "adsense-async/widget/tpl_async_15",
	requires: ["adsense-base/widget/loader", "adsense-async/widget/tool"],
	sub: {
		initial: function(a) {
			var e = this;
			a = this._handleData(a);
			var t = this.requireInstance("adsense-base/widget/loader");
			t.loadAD(a, e.extraParam, $.proxy(e.customFn, e))
		},
		_tmp: ['<div class="#{class_name} #{qa_class_name}" data-daid="#{adid}">', '<a class="a-forum-card" href="#{adurl}" target="_blank">', '<img src="#{forum_img}" />', "</a>", '<p class="a-like-num">#{like_num}</p>', '<p class="a-forum-name">#{forum_name}\u5427</p>', '<button class="btn-sub btn-small a-like-btn">\u5173\u6ce8</button>', "</div>", "<style>", "div.#{class_name} {", "border: none;", "background: none;", "text-align: center;", "width: 88px;", "display: inline-block;", "margin-right:21px;", "margin-top:6px;", "#{customCss}", "}", "div.#{class_name} .a-forum-card{", "width: 86px;", "height: 86px;", "background: white;", "border: 1px solid #e7e7e7;", "border-radius: 1px;", "display: inline-block;", "text-align:center", "}", "div.#{class_name} .a-forum-card img{", "width: 82px;", "height: 82px;", "border-radius: 1px;", "margin-top:2px;", "}", "div.#{class_name} .a-like-num{", "color:#999999;", 'background: url("http://tb1.bdstatic.com/tb/r/image/2015-05-05/f9628a360ed61a872a263fd1d4864347.jpg") no-repeat 0 50%;', "display: inline-block;", "padding-left: 20px;", "font-size:14px;", "}", "div.#{class_name} .a-forum-name{", "font-size:14px;", "white-space: nowrap;", "word-wrap: normal;", "text-overflow: ellipsis;", "width: 88px;", "overflow: hidden;", "}", "div.#{class_name} .a-like-btn{", "margin-top:12px;", "}", "</style>"].join(""),
		_handleData: function(a) {
			a.asyncHTML = "", a.isAsync = "true";
			var e = a.adData,
				t = e.goods_info[0],
				n = this.requireInstance("adsense-async/widget/tool"),
				i = n.genMd5("dasense" + e.id),
				s = n.genQaClassName();
			return this.forum_name = t.forum_name, this.forum_id = t.forum_id, a.asyncHTML = $.tb.format(this._tmp, {
				class_name: i,
				qa_class_name: s,
				adid: e.id,
				customCss: t.custom_css,
				forum_img: t.avatar,
				forum_name: t.forum_name,
				like_num: t.member_count,
				adurl: n.getStatsUrl(e.url, e)
			}), a
		},
		customFn: function(a) {
			var e = this;
			a.on("click", ".a-like-btn", function() {
				var t = $(this),
					n = {
						fid: e.forum_id,
						fname: $.tb.escapeHTML(e.forum_name),
						uid: $.getPageData("user.name", ""),
						tbs: $.getPageData("tbs", ""),
						ie: "gbk"
					};
				$.post("/f/like/commit/add", n, function(e) {
					if("undefined" == typeof e.no) $.dialog.alert("<p style='text-align: center;'>\u8bf7\u6c42\u5f02\u5e38\uff0c\u8bf7\u91cd\u8bd5\uff01</p>", {
						title: "\u5173\u6ce8\u7ed3\u679c",
						acceptValue: "\u786e\u5b9a"
					});
					else {
						t.removeClass("btn-sub").addClass("btn-disable").html("\u5df2\u5173\u6ce8"), $(a[0]).fadeOut("normal", function() {
							a.remove()
						});
						var n = $("#content-recommend-like-forum"),
							i = n.find(".a-like-btn.btn-sub").length;
						0 == i && setTimeout(function() {
							$.tb.location.reload()
						}, 100)
					}
				}, "json"), e._postDaLikeTrack("\u76f4\u63a5\u52a0\u5173\u6ce8")
			})
		},
		_postDaLikeTrack: function(a, e, t, n) {
			"undefined" == typeof a && (a = ""), "undefined" == typeof n && (n = "click"), t = t || {}, e && (t = $.extend({
				obj_name: e.game_name,
				obj_game_id: e.game_id
			}, t)), $.stats.track(a, "\u5206\u53d1\u5173\u6ce8\u5427\u63a8\u8350", "", n, t)
		}
	}
});
_.Module.define({
	path: "adsense-async/widget/loader",
	requires: ["adsense-async/widget/tool", "adsense-async/widget/tpl_async_15"],
	sub: {
		initial: function(a) {
			var e = "/dasense/" + a.url,
				t = a.extraData || {},
				n = a.specialDataName || [],
				s = this.requireInstance("adsense-async/widget/tool", [t]);
			this.tool = s, e = s.getUrl({
				url: e
			}), this.dataname = a.dataname || null, this.dfd = $.Deferred(), this._getData(e, t, n)
		},
		_getData: function(a, e, t) {
			var n = this,
				s = this.tool.getDirInfo(),
				d = this.tool.getSpecialInfo(t);
			e = $.extend(null, e, s, d, {
				ie: "utf-8"
			}), $.getJSON(a, e, function(a) {
				if(0 != a.errno || !n.dataname) return !1;
				var e = $.getPageData("data.adsense", {}, a);
				n.data = e[n.dataname] || [], n._resolve(), n._loadTPL()
			})
		},
		_loadTPL: function() {
			for(var a = !0, e = null, t = 0, n = this.data.length; n > t; t++) {
				var s = this.data[t];
				a && (e = -1 == (s.tpl_name + "").indexOf("ASYNC_") ? "tpl_async_" + s.tpl_name : "tpl_" + s.tpl_name, e = "adsense-async/widget/" + e, this.requireInstance(e, [{
					adData: s,
					needStats: !0
				}]))
			}
		},
		_resolve: function() {
			var a = null;
			a = this.data.length ? {
				no: 0,
				error: ""
			} : {
				no: 1,
				error: "has no data"
			}, this.dfd.resolve(a)
		}
	}
});
_.Module.define({
	path: "forum/widget/like_tip",
	requires: ["adsense-async/widget/loader"],
	sub: {
		initial: function(e, i, s) {
			this.userLevel = s.userLevel, this.forumVdir = s.forumVdir;
			var t = this;
			if(s && s.likeNo && s.likeNo >= 1) {
				var n = $.dialog.open(['<div id="do_like_back_wrapper">', '<img class="like_back_img" src="//tb2.bdstatic.com/tb/img/like_back_c3abf90.jpg">', this.like_forum_tmp, "</div>"].join(""), {
					width: 478,
					acceptValue: "\u77e5\u9053\u4e86"
				});
				$(n.element[0]).find(".dialogJcontent").css("padding-bottom", "0px"), $(n.element[0]).find(".dialogJanswers").css("padding-top", "0px"), n.bind("onaccept", function() {
					t.reloadAndGotop()
				}).bind("onclose", function() {
					t._postDaLikeTrack("\u5173\u95ed"), t.reloadAndGotop()
				})
			} else {
				var r = this.getTipContent(e, i, s),
					a = {
						title: "\u6210\u529f\u63d0\u793a",
						width: 478,
						modal: !e
					};
				this.isSuperMember() && (a.width = 535);
				var n = $.dialog.open(r, a);
				e && $(n.element[0]).css("padding", "2px"), $(n.element[0]).find(".dialogJcontent").tbattr("id", "balv_first_like_dialog"), $(n.element[0]).find(".userlike_tip_span a").click(function() {
					Stats.sendRequest("fr=tb0_forum&st_mod=frs&st_type=entryimallinpop")
				}), $(n.element[0]).on("click", ".userlike_supermember_btn", function() {
					window.open("/tbmall/mall/forumMember"), t.reloadAndGotop()
				}), n.bind("onclose", function() {
					t._postDaLikeTrack("\u5173\u95ed"), t.reloadAndGotop()
				})
			}
			this.initLikeForum(n)
		},
		like_forum_tmp: ['<div id="content-recommend-like-forum">', '<p class="like-btn-wrapper">\u4f60\u53ef\u80fd\u8fd8\u60f3\u5173\u6ce8<button class="btn-default btn-small pull-right a-like-all-btn">\u4e00\u952e\u5173\u6ce8</button></p>', '<div class="adsense-content-recommend-forum"></div>', "</div>"].join(""),
		initLikeForum: function(e) {
			var i = this;
			$.get("/p/getLikeForum", {
				t: 1 * new Date
			}, function(s) {
				var t = [],
					s = "object" != typeof s ? $.parseJSON(s) : s;
				if(0 == s.errno) {
					var n = s.data.info;
					_.forEach(n, function(e) {
						t.push(e.id)
					})
				}
				var r = 100,
					a = i.requireInstance("adsense-async/widget/loader", [{
						url: "recommend",
						dataname: "PC_RECOMM_BOTTOM",
						extraData: {
							user_forum_list: t,
							forum_vdir: i.forumVdir
						}
					}]),
					l = $("#content-recommend-like-forum");
				l.on("click", ".a-like-all-btn", function() {
					i._postDaLikeTrack("\u4e00\u952e\u5173\u6ce8"), l.find(".a-like-btn.btn-sub:lt(4)").trigger("click")
				}), a.dfd.done(function(i) {
					0 == i.no && l.html().length && (l.show(), e.setPosition(null, r))
				})
			})
		},
		_postDaLikeTrack: function(e, i, s, t) {
			"undefined" == typeof e && (e = ""), "undefined" == typeof t && (t = "click"), s = s || {}, i && (s = $.extend({
				obj_name: i.game_name,
				obj_game_id: i.game_id
			}, s)), $.stats.track(e, "\u5206\u53d1\u5173\u6ce8\u5427\u63a8\u8350", "", t, s)
		},
		getTipContent: function(e, i, s) {
			console.log(s);
			var t = "<span>";
			e && (t += e + "\uff0c"), t += "\u606d\u559c\u4f60\u6210\u4e3a\u672c\u5427\u7b2c</span>", t += "<span class='tip_font_orange'>" + s.index + "</span>", t += "<span>\u4f4d\u4f1a\u5458</span>";
			var n = "";
			n += '<div class="userlike_tip_join" id="userlike_tip_join">', n += '<div class="userlike_tip_info" id="userlike_tip_info">' + t + "</div>", n += e ? '<div class="user_rights_msg"><span class="user_rights_msg_gray">\u83b7\u5f97\u5934\u8854&nbsp;</span><img class="user_rights_msg_img" src="/tb/static-frs/img/balv/lv_join.png">&nbsp;' + s.levelName + '<span class="user_rights_msg_gray">&nbsp;\u5347\u7ea7\u4eab\u7279\u6743\uff0c<span><a rel="noreferrer" class="user_rights_msg_link" target="_blank" href="/f/like/level?kw=' + PageData.user.name_url + '">\u67e5\u770b\u4f1a\u5458\u6743\u5229</a></div>' : 1 == s.levelId ? '<div class="user_rights_msg">\u83b7\u5f97\u5934\u8854&nbsp;<img class="user_rights_msg_img" src="/tb/static-frs/img/balv/lv_join.png">&nbsp;' + s.levelName + '\uff0c\u5347\u7ea7\u4eab\u7279\u6743\uff0c<a rel="noreferrer" target="_blank" href="/f/like/level?ie=utf-8&kw=' + encodeURIComponent(PageData.forum.name) + '">\u67e5\u770b\u5347\u7ea7\u79d8\u7c4d</a></div>' : '<div class="user_rights_msg">\u6839\u636e\u4f60\u5728\u672c\u5427\u7684\u6d3b\u8dc3\u8868\u73b0\uff0c\u76f4\u63a5\u6388\u4e88<img src="//tb2.bdstatic.com/tb/static-member/img/badges/' + s.levelId + '.png">&nbsp;' + s.levelName + "\uff0c\u7ed9\u529b\uff01</div>", this.isSuperMember() && (n += this.getSuperMemberHtml()), n += this.like_forum_tmp, n += '<div class="lvlup_tip_btnzone">';
			var r = "";
			return this.isSuperMember() && (n += '<input class="userlike_supermember_btn userlike_sm_btn_style" type="button" value="\u8be6\u7ec6\u4e86\u89e3\u7279\u6743"/>', r = "userlike_sm_btn_style"), e && (n += '<a rel="noreferrer" class="userlike_tip_cancel" target="_blank" href="/home/forum?id=' + PageData.user.portrait + "&fr=" + PageData.product + '">\u5982\u4f55\u53d6\u6d88\u4f1a\u5458</a>'), n += "</div></div>"
		},
		reloadAndGotop: function() {
			window.history && window.history.pushState ? Bigpipe.broadcast("like_status_update", {}) : $.tb.location.setHref($.tb.location.getHref().split("#")[0])
		},
		getSuperMemberHtml: function() {
			var e = [],
				i = this.userLevel,
				s = PageData.forum.name;
			return e.push('<div class="userlike_supermember">'), e.push('<div class="userlike_sm_up clearfix">'), e.push('<div class="userlike_sm_up_gift"></div>'), e.push('<div class="userlike_sm_up_info">'), e.push('<h3>\u5c0a\u8d35\u7684<span class="userlike_sm_up_icon">\u8d34\u5427\u8d85\u7ea7\u4f1a\u5458</span></h3>'), e.push("<h2>\u60a8\u5df2\u6210\u529f\u83b7\u5f97<b>\u3010" + s + "\u5427\u7279\u6743\u5305\u3011</b></h2>"), e.push("<p>\u6709\u6548\u671f\u81f3" + this.getFormatZhTime(1e3 * i.end_time) + "</p>"), e.push("</div>"), e.push("</div>"), e.push('<div class="userlike_sm_down clearfix">'), e.push('<div class="userlike_sm_down_item">'), e.push('<div class="userlike_sm_down_title">\u7ea2\u8272\u6807\u9898</div>'), e.push('<div class="userlike_sm_down_pic userlike_sm_down_pic_1"></div>'), e.push("</div>"), e.push('<div class="userlike_sm_down_item">'), e.push('<div class="userlike_sm_down_title">\u7ecf\u9a8c\u52a0\u901f</div>'), e.push('<div class="userlike_sm_down_pic userlike_sm_down_pic_2"></div>'), e.push("</div>"), e.push("</div>"), e.push("</div>"), e.join("")
		},
		isSuperMember: function() {
			return this.userLevel ? 1e3 * this.userLevel.end_time > 1 * new Date && 2 === this.userLevel.props_id : !1
		},
		getFormatZhTime: function(e) {
			return "number" != typeof e ? "" : (e = new Date(e), [e.getFullYear() + "\u5e74", parseInt(e.getMonth() + 1) + "\u6708", e.getDate() + "\u65e5"].join(""))
		}
	}
});
_.Module.define({
	path: "poster/widget/post_service/post_result_handler_manager",
	requires: ["tbui/widget/captcha_dialog", "forum/widget/like_tip", "encourage-payment/widget/tcharge_dialog", "encourage-payment/widget/tbean_safe", "ueglib/widget/forbidden"],
	sub: {
		initial: function(t) {
		
		},
		_initHandlerMap: function() {
			function t(t, e) {
				var r = this,
					a = r.requireInstance("tbui/widget/captcha_dialog", {
						message: t.data.vcode.str_reason,
						vCode: t.data.vcode.captcha_vcode_str,
						vCodeType: t.data.vcode.captcha_code_type,
						exceptionalAccount: 1 == t.data.vcode.userstatevcode,
						forumName: e.kw,
						forumId: e.fid,
						postType: e.__type__,
						paramsCallback: function() {
							return {
								content: e.content,
								title: e.title,
								tid: e.tid
							}
						}
					});
				a.bind("onclose", function() {
					return a.hide(), r.trigger("complete"), !1
				}), a.bind("onaccept", function() {
					e.vcode = a.getInputValue(), e.vcode_md5 = a.getVCode(), r.trigger("retry", e)
				}), a.show()
			}

			function e() {
				var t = this,
					e = l.messageMap[224010];
				null == e && (e = "\u672a\u77e5\u9519\u8bef"), $.tb.alert({
					title: "\u53d1\u8d34\u5931\u8d25",
					message: e,
					buttons: [{
						text: "\u7ed1\u5b9a\u624b\u673a",
						callback: function() {
							
						}
					}]
				}), this.trigger("error")
			}

			function r(t) {
				var e = this,
					r = "";
				switch(t.data.access_state.type) {
					case "email":
						r = "\u5e10\u53f7\u5b89\u5168\u9a8c\u8bc1\uff08\u90ae\u7bb1)";
						break;
					case "mobile":
						r = "\u5e10\u53f7\u5b89\u5168\u9a8c\u8bc1\uff08\u624b\u673a\uff09";
						break;
					case "bindmobile":
						r = "\u5e10\u53f7\u5b89\u5168\u7ed1\u5b9a\uff08\u624b\u673a\uff09"
				}
				if("bindmobile" !== t.data.access_state.type) {
					var a = passport.pop.initForceverify({
						token: t.data.access_state.token,
						curType: t.data.access_state.type,
						title: r,
						msg: "\u60a8\u7684\u5e10\u53f7\u7591\u4f3c\u88ab\u76d7,\u9a8c\u8bc1\u5bc6\u4fdd\u540e\u7ee7\u7eed",
						onRender: function() {},
						onHide: function() {
							e.trigger("complete")
						},
						onSendvcodeSuccess: function() {},
						onGetapiError: function() {
							$.ajax("/f/commit/commonapi/checkUserInfoCallback", {
								data: {
									action: "reset"
								},
								success: function() {
									e.trigger("complete")
								}
							})
						},
						onSubmitSuccess: function() {
							$.ajax("/f/commit/commonapi/checkUserInfoCallback", {
								success: function() {
									e.trigger("complete")
								}
							})
						},
						onInitFail: function() {
							$.ajax("/f/commit/commonapi/checkUserInfoCallback", {
								data: {
									action: "reset"
								},
								success: function() {
									e.trigger("complete")
								}
							})
						}
					});
					a.show()
				} else {
					var i = passport.pop.ArmorWidget("bindmobile", {
						token: t.data.access_state.token,
						title: r,
						msg: "\u60a8\u7684\u5e10\u53f7\u7591\u4f3c\u88ab\u76d7,\u7ed1\u5b9a\u5bc6\u4fdd\u540e\u7ee7\u7eed",
						auth_title: "\u7ed1\u5b9a\u624b\u673a",
						auth_msg: "\u8bf7\u5148\u7ed1\u5b9a\u624b\u673a",
						onSubmitSuccess: function(t) {
							$.ajax("/f/commit/commonapi/checkUserInfoCallback", {
								data: {
									bindid: t.bindid
								},
								success: function() {
									e.trigger("complete")
								}
							})
						},
						onSubmitFail: function() {
							e.trigger("complete")
						},
						onHide: function() {
							e.trigger("complete")
						},
						onInitFail: function() {
							$.ajax("/f/commit/commonapi/checkUserInfoCallback", {
								data: {
									action: "reset"
								},
								success: function() {
									e.trigger("complete")
								}
							})
						}
					});
					i.show()
				}
			}

			function a(t) {
				var e = this,
					r = l.auditMessageMap[t.bdauditreason];
				null == r && (r = l.auditMessageMap["default"]), $.tb.alert({
					iconSrc: "//tb2.bdstatic.com/tb/img/poster/messageFace_721e436.gif",
					title: "\u7b49\u5f85\u5ba1\u6838",
					heading: "\u7b49\u5f85\u5ba1\u6838...",
					message: r,
					buttons: {
						text: "\u786e\u5b9a",
						callback: function() {
							e.trigger("complete"), $.tb.location.reload()
						}
					}
				}), this.trigger("error")
			}

			function i() {
				var t = this;
				$.tb.alert({
					iconSrc: "https://gsp0.baidu.com/5aAHeD3nKhI2p27j8IqW0jdnxx1xbK/tb/img/errorFace.gif",
					title: "\u53d1\u8d34\u5931\u8d25",
					heading: "\u53d1\u8d34\u5931\u8d25",
					message: p,
					buttons: {
						text: "\u786e\u5b9a",
						callback: function() {
							t.trigger("complete")
						}
					}
				}), this.trigger("error")
			}

			function s(t, e) {
				var r = this,
					a = function() {
						$.tb.alert({
							title: "T\u8c46\u5145\u503c",
							message: "\u6211\u5df2\u6210\u529f\u5145\u503cT\u8c46",
							holderClassName: "tdou_notenough_dialog",
							buttons: {
								text: "\u91cd\u65b0\u53d1\u8868",
								callback: function() {
									r.trigger("retry", e)
								}
							}
						})
					};
				$.tb.alert({
					title: "T\u8c46\u4f59\u989d\u4e0d\u8db3",
					message: "\u60a8\u7684T\u8c46\u4f59\u989d\u4e0d\u8db3\uff0c\u53d1\u8868\u8d34\u5b50\u5931\u8d25\uff0c\u8bf7\u5145\u503c\u540e\u91cd\u8bd5",
					holderClassName: "tdou_notenough_dialog",
					onclose: function() {
						r.trigger("complete")
					},
					buttons: {
						text: "\u5145\u503cT\u8c46",
						callback: function() {
							r.requireInstance("encourage-payment/widget/tcharge_dialog"), r.trigger("complete"), a()
						}
					}
				})
			}

			function n() {
				var t = this;
				$.tb.alert({
					title: "\u63d0\u793a\u4fe1\u606f",
					message: "<p>\u4eb2\uff0c\u60a8\u53cd\u9988\u7684\u95ee\u9898\u53ef\u80fd\u4e0e\u5220\u5e16\u6216\u5c01\u7981\u6709\u5173\u3002</p>\u8bf7\u786e\u8ba4\u53cd\u9988\u5185\u5bb9\u4e2d\u5305\u542b<strong>\u88ab\u5c01\u8d26\u53f7</strong>\u3001<strong>\u88ab\u5220\u5e16\u94fe\u63a5</strong>\u3001<strong>\u9875\u9762\u622a\u56fe</strong>\uff0c\u4ee5\u4fbf\u4e8e\u6211\u4eec\u66f4\u5feb\u5e2e\u60a8\u89e3\u51b3\u95ee\u9898\u54e6~",
					holderClassName: "ueg_confirm_note_dialog",
					onclose: function() {
						t.trigger("complete")
					},
					buttons: [{
						text: "\u786e\u8ba4\u53d1\u8868",
						callback: function() {
							t.trigger("complete"), t.trigger("retryPost")
						}
					}, {
						text: "\u6211\u518d\u6539\u6539",
						callback: function() {
							t.trigger("complete")
						}
					}]
				}), t.trigger("uegPostParameter")
			}

			function o() {
				var t = this;
				$.tb.alert({
					title: "\u63d0\u793a\u4fe1\u606f",
					message: "<p>\u7ebf\u8def\u5347\u7ea7\u6539\u9020\uff0c\u6682\u65f6\u65e0\u6cd5\u53d1\u8d34\uff0c\u8bf7\u8010\u5fc3\u7b49\u5f85\uff0c\u7ed9\u60a8\u5e26\u6765\u4e0d\u4fbf\u8868\u793a\u62b1\u6b49~</p>",
					holderClassName: "ueg_confirm_note_dialog",
					onclose: function() {
						t.trigger("complete")
					},
					buttons: [{
						text: "\u5173\u95ed",
						callback: function() {
							t.trigger("complete")
						}
					}]
				})
			}

			function c(t, e) {
				var r = this;
				r.requireInstance("encourage-payment/widget/tbean_safe", {
					json: t,
					sucCallback: function(t) {
						var a = $.extend(e, t);
						r.trigger("retry", a)
					},
					errCallback: function() {
						r.trigger("complete")
					},
					content: r
				})
			}
			var l = this,
				d = l.requireInstance("ueglib/widget/forbidden", [l.blockInfo]),
				g = d.getForbiddenInfo(),
				u = d.getUnforbiddenPageLink(PageData.forum.id),
				p = "";
			g.isForbidden && (p = ["\u60a8\u53ef\u80fd\u5b58\u5728\u8fdd\u89c4\u64cd\u4f5c\uff0c\u5df2\u88ab" + g.forbiddenBy + "\u5c01\u7981\uff0c\u53bb", '<a data-site="richPoster" ', 'href="' + u + '" ', 'class="ueg_pmc-link ueg_track-richPoster" ', 'target="_blank">\u7533\u8bf7\u6062\u590d</a>', g.forbiddenNotice, g.forbiddenReason].join("")), this.forbidTpl = p, this.registerHandler(0, function(t, e) {
				var r = this;
				"thread" == e.__type__ && t.data.balv && t.data.balv.member_status ? ($.stats.sendRequest("fr=tb0_forum&st_page=frs&st_mod=like&st_type=thread"), r.requireInstance("forum/widget/like_tip", ["\u53d1\u8d34\u6210\u529f", !1, {
					index: t.data.balv.member_index
				}])) : e.file_id ? $.tb.alert({
					iconSrc: "//tb2.bdstatic.com/tb/img/poster/messageFace_721e436.gif",
					title: "\u53d1\u8868\u8d34\u5b50",
					heading: "\u89c6\u9891\u8f6c\u7801\u4e2d",
					message: "\u7a0d\u540e\u8f6c\u7801\u5b8c\u6210\u540e\u8d34\u5b50\u5c06\u81ea\u52a8\u53d1\u8868\u3002\u8bf7\u8010\u5fc3\u7b49\u5f85\uff0c\u8c22\u8c22",
					buttons: [{
						text: "\u786e\u5b9a",
						callback: function() {
							r.trigger("complete"), r.trigger("success")
						}
					}]
				}) : r.trigger("success", $.extend({}, t, {
					postData: e
				}))
			}), this.registerHandler(224011, t), this.registerHandler(40, t), this.registerHandler(224010, e), this.registerHandler(4010, e), this.registerHandler(227001, r), this.registerHandler(220009, a), this.registerHandler(9, a), this.registerHandler(12, i), this.registerHandler(220012, i), this.registerHandler(2270005, s), this.registerHandler(220902, n), this.registerHandler(220903, o), this.registerHandler(360007, c), this.registerHandler(2150040, c), this.registerHandler(2270018, c), this.registerHandler(1990005, c), this.registerHandler(2190005, c), this.registerHandler(2270043, c), this.registerHandler(2270040, c), this.registerHandler(2270041, c), this.registerHandler(2270042, c)
		},
		registerHandler: function(t, e) {
			this.handlerMap[t] = e
		},
		getHandler: function(t, e) {
			var r = this,
				a = r.handlerMap[t];
			if(null == a) {
				var i = r.messageMap[t];
				null == i && (i = "\u672a\u77e5\u9519\u8bef\uff0c\u9519\u8bef\u53f7\uff1a" + t), a = r._defaultHandler ? function() {
					var t = this;
					r._defaultHandler.call(t, i), this.trigger("error")
				} : function() {
					var t = this;
					$.tb.alert({
						iconSrc: "https://gsp0.baidu.com/5aAHeD3nKhI2p27j8IqW0jdnxx1xbK/tb/img/errorFace.gif",
						title: "\u53d1\u8d34\u5931\u8d25",
						heading: "\u53d1\u8d34\u5931\u8d25",
						message: $.tb.format(i, {
							error: e
						}),
						onclose: function() {
							t.trigger("complete")
						},
						buttons: {
							text: "\u786e\u5b9a"
						}
					}), this.trigger("error")
				}
			}
			return a
		},
		setDefaultHandler: function(t) {
			return "function" == typeof t ? (this._defaultHandler = t, !0) : !1
		},
		messageMap: {
			220001: "\u53c2\u6570\u9519\u8bef",
			220008: "\u5148\u53d1\u540e\u5ba1",
			220009: "",
			220011: "\u8d34\u5b50\u6807\u9898\u548c\u5185\u5bb9\u592a\u957f",
			220012: this.forbidTpl,
			220013: "\u64cd\u4f5c\u5931\u8d25\uff0c\u60a8\u7684\u7f51\u7edc\u5730\u5740\u7531\u4e8e\u975e\u6cd5\u64cd\u4f5c\u88ab\u5c01<br/><a href='/upc/userinfo?fid=fid' target=\"_blank\">\u67e5\u770b\u5c01\u7981\u4fe1\u606f</a>",
			220015: "\u8bf7\u4e0d\u8981\u53d1\u8868\u542b\u6709\u4e0d\u9002\u5f53\u5185\u5bb9\u7684\u7559\u8a00<br>\u8bf7\u4e0d\u8981\u53d1\u8868\u5e7f\u544a\u8d34",
			220034: "\u60a8\u8bf4\u8bdd\u592a\u5feb\u4e86:) \u8bf7\u5148\u505c\u4e0b\u6765\u559d\u676f\u8336\u5427\uff0c\u6216\u8005\u53ef\u4ee5\u53bb\u522b\u7684\u5427\u770b\u770b\u54e6\uff0c\u4e00\u5b9a\u4f1a\u53d1\u73b0\u8fd8\u6709\u60a8\u611f\u5174\u8da3\u7684\u8bdd\u9898",
			220035: "\u4eb2\uff0c\u5df2@\u4e0d\u5c11\u4eba\u4e86\uff0c\u4ee5\u514d\u6253\u6405\u66f4\u591a\u4eba\uff0c\u6b47\u4e00\u4f1a\u5427~",
			220037: "\u60a8\u5df2\u5c1d\u8bd5\u63d0\u4ea4\u591a\u6b21\u4e86\uff0c\u8bf7\u8fd4\u56de\u540e\u5237\u65b0\u9875\u9762\uff0c\u65b9\u53ef\u91cd\u65b0\u53d1\u8d34",
			220038: "\u9a8c\u8bc1\u7801\u8d85\u65f6\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165",
			220040: "\u9a8c\u8bc1\u7801\u8f93\u5165\u9519\u8bef\uff0c\u8bf7\u60a8\u8fd4\u56de\u540e\u91cd\u65b0\u8f93\u5165",
			220119: "\u5bf9\u4e0d\u8d77\uff0c\u672c\u4e3b\u9898\u7684\u56de\u590d\u6570\u5df2\u7ecf\u8fbe\u5230\u4e0a\u9650\uff0c\u611f\u8c22\u60a8\u7684\u53c2\u4e0e\uff0c\u6b22\u8fce\u60a8\u6d4f\u89c8\u672c\u5427\u7684\u5176\u5b83\u4e3b\u9898",
			220901: "",
			224009: "\u8d34\u5b50\u5df2\u88ab\u9501\u5b9a\uff0c\u65e0\u6cd5\u8fdb\u884c\u8be5\u64cd\u4f5c",
			224010: "\u60a8\u7684\u8d26\u53f7\u5b58\u5728\u5b89\u5168\u98ce\u9669\u6682\u4e0d\u80fd\u53d1\u8d34\uff0c\u8bf7\u5148\u8fdb\u884c\u624b\u673a\u7ed1\u5b9a\u540e\u518d\u53d1\u8d34\u5427\u3002",
			230004: "\u60a8\u672a\u767b\u5f55\u6216\u5df2\u9000\u51fa\u767b\u5f55\u72b6\u6001\uff0c\u8bf7\u5148\u767b\u5f55\u518d\u8fdb\u884c\u64cd\u4f5c\u3002",
			230008: "\u60a8\u7684\u5185\u5bb9\u5df2\u63d0\u4ea4\u6210\u529f\uff0c\u6b63\u5728\u8fdb\u884c\u5ba1\u6838\uff0c\u8bf7\u8010\u5fc3\u7b49\u5f85\u3002",
			230013: "\u64cd\u4f5c\u5931\u8d25\uff0c\u60a8\u7684\u5e10\u53f7\u56e0\u8fdd\u89c4\u64cd\u4f5c\u800c\u88ab\u5c01\u7981",
			230020: "\u60a8\u53d1\u8868\u7684\u8d34\u5b50\u7684\u6807\u9898\u6216\u6b63\u6587\u5305\u542b\u592a\u5c11\u7684\u6587\u5b57\uff0c\u8bf7\u4fee\u6539\u540e\u518d\u53d1\u8868",
			230044: "\u5efa\u5427\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u5c1d\u8bd5",
			230045: "\u62b1\u6b49\uff0c\u60a8\u63d0\u4ea4\u7684\u8d34\u5427\u540d\u79f0\u542b\u7279\u6b8a\u5b57\u7b26\uff0c\u76ee\u524d\u65e0\u6cd5\u521b\u5efa\uff0c\u63a8\u8350\u60a8\u4f7f\u7528\u6c49\u5b57\u3001\u5b57\u6bcd\u6216\u6570\u5b57\u4f5c\u4e3a\u8d34\u5427\u540d\u79f0",
			230046: "\u62b1\u6b49\uff0c\u60a8\u7684\u8d34\u5b50\u8fc7\u957f\uff0c\u65e0\u6cd5\u6b63\u5e38\u63d0\u4ea4\u3002\u5efa\u8bae\u60a8\u7cbe\u7b80\u6216\u5206\u6bb5\u540e\u91cd\u65b0\u63d0\u4ea4\uff0c\u8c22\u8c22!",
			230265: "\u60a8\u672a\u767b\u5f55\u6216\u5df2\u9000\u51fa\u767b\u5f55\u72b6\u6001\uff0c\u8bf7\u5148\u767b\u5f55\u518d\u8fdb\u884c\u64cd\u4f5c\u3002",
			230273: "\u64cd\u4f5c\u5931\u8d25\uff0c\u8be5\u5e16\u5b50\u5df2\u4e0d\u5b58\u5728",
			230277: "\u60a8\u5df2\u88ab #{error} \u7981\u8a00\u3002\u5728\u6b64\u671f\u95f4\u5185\uff0c\u4e0d\u53ef\u56de\u590d\u6216@ #{error}\u3002",
			230278: "\u60a8\u5df2\u88ab #{error} \u7981\u8a00\u3002\u5728\u6b64\u671f\u95f4\u5185\uff0c\u4e0d\u53ef\u56de\u590d\u6216@ #{error}\u3002",
			238008: "#{error}",
			230308: "\u62b1\u6b49\uff0c\u60a8\u6ca1\u6709\u6743\u9650\u8fdb\u884c\u8be5\u9879\u64cd\u4f5c\u3002",
			230705: "\u672c\u5427\u5f53\u524d\u53ea\u80fd\u6d4f\u89c8\uff0c\u4e0d\u80fd\u53d1\u8d34\uff01",
			230808: "\u62b1\u6b49\uff0c\u6bcf\u5c42\u697c\u63d2\u5165\u7684\u89c6\u9891\u4e0d\u80fd\u8d85\u8fc71\u4e2a\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4",
			230809: "\u62b1\u6b49\uff0c\u6bcf\u5c42\u697c\u63d2\u5165\u7684\u56fe\u7247\u4e0d\u80fd\u8d85\u8fc710\u5f20\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4",
			230814: "\u62b1\u6b49\uff0c\u6bcf\u5c42\u697c\u63d2\u5165\u7684\u8868\u60c5\u4e0d\u80fd\u8d85\u8fc710\u5f20\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4",
			230815: "\u62b1\u6b49\uff0c\u6bcf\u5c42\u697c\u63d2\u5165\u7684\u97f3\u4e50\u4e0d\u80fd\u8d85\u8fc710\u4e2a\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4",
			230850: "\u5427\u540d\u5df2\u5b58\u5728\uff0c\u8bf7\u52ff\u91cd\u590d\u521b\u5efa",
			230870: "\u672c\u5e16\u5b50\u56de\u590d\u8f83\u591a\uff0c\u4e0d\u652f\u6301\u5220\u9664",
			230871: "\u53d1\u8d34\u592a\u9891\u7e41\uff0c\u505c\u4e0b\u6765\u559d\u676f\u8336\u4f11\u606f\u4e0b\u5427",
			230887: "\u53d1\u8868\u5931\u8d25\u4e86\uff0c\u8bf7\u91cd\u65b0\u5c1d\u8bd5",
			230889: "\u60a8\u5df2\u88ab\u52a0\u5165\u5c0f\u9ed1\u5c4b\uff0c\u65e0\u6cd5\u8fdb\u884c\u8be5\u64cd\u4f5c\u3002",
			230900: "\u4e3a\u62b5\u5fa1\u6316\u575f\u5371\u5bb3\uff0c\u672c\u5427\u5427\u4e3b\u5df2\u653e\u51fa\u8d34\u5427\u795e\u517d--\u8d85\u7ea7\u9759\u6b62\u86d9\uff0c\u672c\u8d34\u6682\u65f6\u65e0\u6cd5\u56de\u590d\u3002",
			230901: "\u8be5\u697c\u56de\u590d\u5df2\u8fbe\u4e0a\u9650\uff0c\u8bf7\u5230\u522b\u7684\u697c\u5c42\u53c2\u4e0e\u4e92\u52a8\u5427",
			230902: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u8fc7\u957f\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			230903: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u4e0d\u5408\u6cd5\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			230961: "\u53d1\u8d34\u5931\u8d25\uff0c\u60a8\u8f93\u5165\u7684\u56fe\u7247\u5730\u5740\u6709\u9519\u8bef\uff0c\u8bf7\u68c0\u67e5\u66f4\u6b63\u540e\u518d\u6b21\u53d1\u5e03\uff1a\uff09",
			230962: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u4e0d\u5408\u6cd5\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			230963: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u4e0d\u5408\u6cd5\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			231120: "\u62b1\u6b49\uff0c\u60a8\u8f93\u5165\u7684\u56fe\u7247\u3001\u89c6\u9891\u94fe\u63a5\u5730\u5740\u9519\u8bef\uff0c\u60a8\u53ef\u4ee5\u70b9\u51fb<a href='//www.baidu.com/search/post_img.html' target='_blank'>\u67e5\u770b\u76f8\u5173\u5e2e\u52a9</a>\u6216\u8fd4\u56de\u4fee\u6539",
			232e3: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u4e0d\u5408\u6cd5\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			232001: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u4e0d\u5408\u6cd5\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			232007: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u4e0d\u5408\u6cd5\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			232101: "\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u4e0d\u5408\u6cd5\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u65b0\u63d0\u4ea4\u3002",
			233001: "\u53d1\u8868\u5931\u8d25\u4e86\uff0c\u8bf7\u91cd\u65b0\u518d\u8bd5\u3002",
			233003: "\u53d1\u8868\u5931\u8d25\u4e86\uff0c\u8bf7\u91cd\u65b0\u518d\u8bd5\u3002",
			233004: "\u53d1\u8868\u5931\u8d25\u4e86\uff0c\u8bf7\u91cd\u65b0\u518d\u8bd5\u3002",
			233005: "\u53d1\u8868\u5931\u8d25\u4e86\uff0c\u8bf7\u91cd\u65b0\u518d\u8bd5\u3002",
			233006: "\u53d1\u8868\u5931\u8d25\u4e86\uff0c\u8bf7\u91cd\u65b0\u518d\u8bd5\u3002",
			233007: "\u53d1\u8868\u5931\u8d25\u4e86\uff0c\u8bf7\u91cd\u65b0\u518d\u8bd5\u3002",
			233010: "\u672c\u5427\u4ec5\u5141\u8bb8\u5b98\u65b9\u7c89\u4e1d\u56e2\u6210\u5458\u56de\u590d\u54e6\uff0c\u8d76\u5feb\u52a0\u5165\u5427\uff01",
			220903: "\u7ebf\u8def\u5347\u7ea7\u6539\u9020\uff0c\u6682\u65f6\u65e0\u6cd5\u53d1\u8d34\uff0c\u8bf7\u8010\u5fc3\u7b49\u5f85\uff0c\u7ed9\u60a8\u5e26\u6765\u4e0d\u4fbf\u8868\u793a\u62b1\u6b49~",
			234031: "\u4e0a\u4f20\u6587\u4ef6\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u4e0a\u4f20\u3002",
			235004: "\u4f7f\u7528\u9053\u5177\u9519\u8bef\uff0c\u8be5\u9053\u5177\u8981\u8d2d\u4e70\u540e\u624d\u80fd\u4f7f\u7528\u3002",
			235005: "\u65e0\u6743\u9650\u4f7f\u7528\u8be5\u9053\u5177\uff0c\u8bf7\u53bb\u8d2d\u4e70\u3002",
			236001: "\u8be5\u8d34\u4e3a\u8d34\u5427\u624b\u673aApp\u76f4\u64ad\u8d34\uff0c\u76ee\u524d\u6682\u65f6\u4e0d\u652f\u6301\u975e\u697c\u4e3b\u4e4b\u5916\u7684\u7528\u6237\u5360\u697c\uff0c\u4f46\u4f60\u53ef\u4ee5\u5728\u697c\u4e2d\u697c\u56de\u590d\u54e6\uff01",
			239e3: "\u60a8\u8fd8\u6ca1\u6709\u7528\u6237\u540d\uff0c\u4e0d\u80fd\u5728\u672c\u5427\u53d1\u8d34\u3002\u8bf7\u5148\u586b\u5199\u7528\u6237\u540d\u3002",
			239001: "\u7531\u4e8e\u533f\u540d\u72b6\u6001\u6216\u672c\u5427\u8bbe\u7f6e\uff0c\u65e0\u6cd5\u53d1\u8868\u5e26\u6709\u56fe\u7247\u7684\u4e3b\u9898\u3002",
			2270028: "\u9644\u52a0\u5956\u54c1\u7684\u989d\u5ea6\u4e0d\u80fd\u5c11\u4e8e10000T\u8c46",
			2270029: "\u4e3b\u9898\u53d1\u9001\u6210\u529f\uff0c\u5956\u52b1\u6dfb\u52a0\u5931\u8d25",
			2270018: "\u62b1\u6b49\uff0c\u60a8\u6ca1\u6709\u6743\u9650\u53d1\u5956\u52b1\u8d34",
			2270027: "\u611f\u8a00\u8bf7\u63a7\u5236\u5728140\u4e2a\u5b57\u4e4b\u5185",
			250123: "\u56fe\u7247\u5c3a\u5bf8\u8d85\u9650\uff0c\u8bf7\u4fee\u6539\u540e\u91cd\u8bd5",
			10: "\u8d34\u5b50\u5185\u5bb9\u5305\u542b\u592a\u5c11\u7684\u6587\u5b57",
			11: "\u8d34\u5b50\u6807\u9898\u548c\u5185\u5bb9\u592a\u957f",
			12: this.forbidTpl,
			13: "\u64cd\u4f5c\u5931\u8d25\uff0c\u60a8\u7684\u7f51\u7edc\u5730\u5740\u7531\u4e8e\u975e\u6cd5\u64cd\u4f5c\u88ab\u5c01<br/><a href='/upc/userinfo?fid=fid' target=\"_blank\">\u67e5\u770b\u5c01\u7981\u4fe1\u606f</a>",
			14: "\u60a8\u53d1\u5e03\u7684\u8d34\u5b50\u5df2\u7ecf\u5b58\u5728",
			15: "\u8bf7\u4e0d\u8981\u53d1\u8868\u542b\u6709\u4e0d\u9002\u5f53\u5185\u5bb9\u7684\u7559\u8a00<br>\u8bf7\u4e0d\u8981\u53d1\u8868\u5e7f\u544a\u8d34",
			501: "\u8bf7\u4e0d\u8981\u53d1\u8868\u542b\u6709\u4e0d\u9002\u5f53\u5185\u5bb9\u7684\u7559\u8a00<br>\u8bf7\u4e0d\u8981\u53d1\u8868\u5e7f\u544a\u8d34",
			16: "\u5bf9\u4e0d\u8d77\uff0c\u60a8\u6240\u8f93\u5165\u7684\u8d34\u5427\u4e0d\u5b58\u5728\u3002\u7531\u4e8e\u7cfb\u7edf\u5347\u7ea7\u7ef4\u62a4\uff0c\u65b0\u5efa\u8d34\u5427\u529f\u80fd\u6682\u505c\uff0c\u5e0c\u671b\u5f97\u5230\u60a8\u7684\u8c05\u89e3\uff01",
			17: "\u672c\u5427\u5f53\u524d\u53ea\u80fd\u6d4f\u89c8\uff0c\u4e0d\u80fd\u53d1\u8d34\uff01",
			19: "\u60a8\u7684\u7528\u6237\u540d\u6216\u8005\u5bc6\u7801\u586b\u5199\u6709\u8bef\uff0c\u8bf7\u786e\u8ba4\u540e\u518d\u53d1\u8868",
			200: "\u60a8\u7684\u7528\u6237\u540d\u6216\u8005\u5bc6\u7801\u586b\u5199\u6709\u8bef\uff0c\u8bf7\u786e\u8ba4\u540e\u518d\u53d1\u8868",
			201: "\u60a8\u7684\u7528\u6237\u540d\u6216\u8005\u5bc6\u7801\u586b\u5199\u6709\u8bef\uff0c\u8bf7\u786e\u8ba4\u540e\u518d\u53d1\u8868",
			202: "\u60a8\u7684\u7528\u6237\u540d\u6216\u8005\u5bc6\u7801\u586b\u5199\u6709\u8bef\uff0c\u8bf7\u786e\u8ba4\u540e\u518d\u53d1\u8868",
			20: "\u60a8\u53d1\u8868\u7684\u8d34\u5b50\u7684\u6807\u9898\u6216\u6b63\u6587\u5305\u542b\u592a\u5c11\u7684\u6587\u5b57\uff0c\u8bf7\u4fee\u6539\u540e\u518d\u53d1\u8868",
			22: "\u60a8\u53d1\u8868\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u7531\u4e8e\u7279\u6b8a\u539f\u56e0\u6211\u4eec\u9700\u8981\u6838\u5b9e\u8be5\u8d34\u5185\u5bb9\u662f\u5426\u542b\u6709\u4e0d\u826f\u4fe1\u606f\uff0c\u6211\u4eec\u4f1a\u572810\u5206\u949f\u5185\u786e\u8ba4\uff0c\u8bf7\u60a8\u8010\u5fc3\u7b49\u5f85\uff01",
			23: "\u60a8\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u9700\u8981\u7cfb\u7edf\u5ba1\u6838\u901a\u8fc7\u540e\u624d\u80fd\u5efa\u7acb\u8d34\u5427",
			33: "\u60a8\u53d1\u8d34\u592a\u5feb\u4e86:) \u8bf7\u7a0d\u540e\u518d\u53d1",
			34: "\u60a8\u8bf4\u8bdd\u592a\u5feb\u4e86:) \u8bf7\u5148\u505c\u4e0b\u6765\u559d\u676f\u8336\u5427\uff0c\u6216\u8005\u53ef\u4ee5\u53bb\u522b\u7684\u5427\u770b\u770b\u54e6\uff0c\u4e00\u5b9a\u4f1a\u53d1\u73b0\u8fd8\u6709\u60a8\u611f\u5174\u8da3\u7684\u8bdd\u9898",
			35: "\u4eb2\uff0c\u5df2@\u4e0d\u5c11\u4eba\u4e86\uff0c\u4ee5\u514d\u6253\u6405\u66f4\u591a\u4eba\uff0c\u6b47\u4e00\u4f1a\u5427~",
			36: "\u8bf7\u4e0d\u8981\u53d1\u5e7f\u544a\u8d34\uff01",
			37: "\u60a8\u5df2\u5c1d\u8bd5\u63d0\u4ea4\u591a\u6b21\u4e86\uff0c\u8bf7\u8fd4\u56de\u540e\u5237\u65b0\u9875\u9762\uff0c\u65b9\u53ef\u91cd\u65b0\u53d1\u8d34",
			38: "\u9a8c\u8bc1\u7801\u8d85\u65f6\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165",
			39: "\u7531\u4e8e\u60a8\u591a\u6b21\u8f93\u9519\u9a8c\u8bc1\u7801\uff0c\u8bf7\u60a8\u8fd4\u56de\u540e\u5237\u65b0\u9875\u9762\uff0c\u65b9\u53ef\u91cd\u65b0\u53d1\u8d34",
			40: "\u9a8c\u8bc1\u7801\u8f93\u5165\u9519\u8bef\uff0c\u8bf7\u60a8\u8fd4\u56de\u540e\u91cd\u65b0\u8f93\u5165",
			41: "\u60a8\u7684\u8d34\u5b50\u53ef\u80fd\u5305\u542b\u4e0d\u5408\u9002\u7684\u5185\u5bb9\uff0c\u8bf7\u60a8\u786e\u5b9a\u540e\u518d\u63d0\u4ea4",
			42: "\u60a8\u7684\u53d1\u8d34\u884c\u4e3a\u88ab\u7cfb\u7edf\u8ba4\u4e3a\u6709\u53d1\u5e7f\u544a\u5acc\u7591\uff0c\u8bf7\u60a8\u7a0d\u540e\u518d\u53d1",
			43: "\u60a8\u7684\u53d1\u8d34\u884c\u4e3a\u6216\u8d34\u5b50\u5185\u5bb9\u6709\u5e7f\u544a\u6216\u4e0d\u5408\u9002\u7684\u7279\u5f81\uff0c\u8bf7\u60a8\u786e\u5b9a\u540e\u518d\u53d1\u9001",
			44: "\u5bf9\u4e0d\u8d77\uff0c\u672c\u5427\u6682\u65f6\u9650\u5236\u90e8\u5206\u7528\u6237\u53d1\u8868\u4e3b\u9898\u8d34\u5b50\uff0c\u60a8\u53ef\u4ee5\u6d4f\u89c8\u6216\u56de\u590d\u672c\u5427\u5176\u5b83\u5185\u5bb9\uff0c\u7ed9\u60a8\u5e26\u6765\u4e0d\u4fbf\u5e0c\u671b\u5f97\u5230\u60a8\u7684\u8c05\u89e3\u3002",
			119: "\u5bf9\u4e0d\u8d77\uff0c\u672c\u4e3b\u9898\u7684\u56de\u590d\u6570\u5df2\u7ecf\u8fbe\u5230\u4e0a\u9650\uff0c\u611f\u8c22\u60a8\u7684\u53c2\u4e0e\uff0c\u6b22\u8fce\u60a8\u6d4f\u89c8\u672c\u5427\u7684\u5176\u5b83\u4e3b\u9898",
			1120: "\u62b1\u6b49\uff0c\u60a8\u8f93\u5165\u7684\u56fe\u7247\u3001\u89c6\u9891\u94fe\u63a5\u5730\u5740\u9519\u8bef\uff0c\u60a8\u53ef\u4ee5\u70b9\u51fb<a href='//www.baidu.com/search/post_img.html' target='_blank'>\u67e5\u770b\u76f8\u5173\u5e2e\u52a9</a>\u6216\u8fd4\u56de\u4fee\u6539",
			1121: "\u62b1\u6b49\uff0c\u89c6\u9891\u670d\u52a1\u5347\u7ea7\u4e2d\uff0c\u60a8\u6682\u65f6\u65e0\u6cd5\u53d1\u8868\u5e26\u6709\u89c6\u9891\u7684\u8d34\u5b50\uff0c\u7ed9\u60a8\u5e26\u6765\u7684\u4e0d\u4fbf\u8bf7\u539f\u8c05",
			100: "\u5bf9\u4e0d\u8d77\uff0c\u672c\u5427\u6682\u65f6\u9650\u5236\u90e8\u5206\u7528\u6237\u4f7f\u7528\u5b8c\u6574\u7684\u8d34\u5427\u529f\u80fd\uff0c\u60a8\u53ef\u4ee5\u6d4f\u89c8\u672c\u5427\u5176\u5b83\u5185\u5bb9\uff0c\u7ed9\u60a8\u5e26\u6765\u4e0d\u4fbf\u5e0c\u671b\u5f97\u5230\u60a8\u7684\u8c05\u89e3\u3002",
			701: "\u4e3a\u4e86\u51cf\u5c11\u6076\u610f\u704c\u6c34\u548c\u5e7f\u544a\u5e16\uff0c\u672c\u5427\u4e0d\u5141\u8bb8\u672a\u767b\u5f55\u7528\u6237\u53d1\u8d34\uff0c\u767b\u5f55\u7528\u6237\u4e0d\u53d7\u5f71\u54cd\uff0c\u7ed9\u60a8\u5e26\u6765\u7684\u4e0d\u4fbf\u6df1\u8868\u6b49\u610f",
			702: "\u4e3a\u4e86\u51cf\u5c11\u6076\u610f\u704c\u6c34\u548c\u5e7f\u544a\u5e16\uff0c\u672c\u5427\u9650\u5236\u90e8\u5206\u7528\u6237\u53d1\u8d34\uff0c\u7ed9\u60a8\u5e26\u6765\u7684\u4e0d\u4fbf\u6df1\u8868\u6b49\u610f",
			703: "\u4e3a\u4e86\u51cf\u5c11\u6076\u610f\u704c\u6c34\u548c\u5e7f\u544a\u5e16\uff0c\u672c\u5427\u88ab\u8bbe\u7f6e\u4e3a\u4ec5\u672c\u5427\u4f1a\u5458\u624d\u80fd\u53d1\u8d34\uff0c\u7ed9\u60a8\u5e26\u6765\u7684\u4e0d\u4fbf\u6df1\u8868\u6b49\u610f\u3002<a href='/f?kw=this.bdQueryWordEnc#1' target=_blank>\u70b9\u6b64\u7533\u8bf7\u52a0\u5165</a>\u672c\u5427\u4f1a\u5458",
			704: "\u4e3a\u4e86\u51cf\u5c11\u6076\u610f\u704c\u6c34\u548c\u5e7f\u544a\u5e16\uff0c\u672c\u5427\u88ab\u8bbe\u7f6e\u4e3a\u4ec5\u672c\u5427\u7ba1\u7406\u56e2\u961f\u624d\u80fd\u53d1\u8d34\uff0c\u7ed9\u60a8\u5e26\u6765\u7684\u4e0d\u4fbf\u6df1\u8868\u6b49\u610f",
			705: "\u672c\u5427\u5f53\u524d\u53ea\u80fd\u6d4f\u89c8\uff0c\u4e0d\u80fd\u53d1\u8d34\uff01",
			706: "\u62b1\u6b49\uff0c\u672c\u8d34\u6682\u65f6\u65e0\u6cd5\u56de\u590d\u3002",
			45: "\u62b1\u6b49\uff0c\u60a8\u63d0\u4ea4\u7684\u8d34\u5427\u540d\u79f0\u542b\u7279\u6b8a\u5b57\u7b26\uff0c\u76ee\u524d\u65e0\u6cd5\u521b\u5efa\uff0c\u63a8\u8350\u60a8\u4f7f\u7528\u6c49\u5b57\u3001\u5b57\u6bcd\u6216\u6570\u5b57\u4f5c\u4e3a\u8d34\u5427\u540d\u79f0",
			46: "\u62b1\u6b49\uff0c\u60a8\u7684\u8d34\u5b50\u8fc7\u957f\uff0c\u65e0\u6cd5\u6b63\u5e38\u63d0\u4ea4\u3002\u5efa\u8bae\u60a8\u7cbe\u7b80\u6216\u5206\u6bb5\u540e\u91cd\u65b0\u63d0\u4ea4\uff0c\u8c22\u8c22!",
			815: "\u62b1\u6b49\uff0c\u60a8\u5df2\u9000\u51fa\u767b\u5f55\u6216\u672a\u8d2d\u4e70\u97f3\u4e50\u9053\u5177\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u91cd\u8bd5",
			900: "\u4e3a\u62b5\u5fa1\u6316\u575f\u5371\u5bb3\uff0c\u672c\u5427\u5427\u4e3b\u5df2\u653e\u51fa\u8d34\u5427\u795e\u517d--\u8d85\u7ea7\u9759\u6b62\u86d9\uff0c\u672c\u8d34\u6682\u65f6\u65e0\u6cd5\u56de\u590d\u3002",
			961: "\u53d1\u8d34\u5931\u8d25\uff0c\u60a8\u8f93\u5165\u7684\u56fe\u7247\u5730\u5740\u6709\u9519\u8bef\uff0c\u8bf7\u68c0\u67e5\u66f4\u6b63\u540e\u518d\u6b21\u53d1\u5e03\uff1a\uff09",
			9001: "\u7531\u4e8e\u533f\u540d\u72b6\u6001\u6216\u672c\u5427\u8bbe\u7f6e\uff0c\u65e0\u6cd5\u53d1\u8868\u5e26\u6709\u56fe\u7247\u7684\u4e3b\u9898\u3002",
			2100: "\u5185\u5bb9\u542b\u6709\u9ad8\u7ea7\u5b57\u4f53\u6548\u679c\uff0c\u4fdd\u6301\u8fde\u7eed\u7b7e\u5230\u5c31\u80fd\u4f7f\u7528\u54e6~~",
			4010: "\u60a8\u7684\u8d26\u53f7\u5b58\u5728\u5b89\u5168\u98ce\u9669\u6682\u4e0d\u80fd\u53d1\u8d34\uff0c\u8bf7\u5148\u8fdb\u884c\u624b\u673a\u7ed1\u5b9a\u540e\u518d\u53d1\u8d34\u5427\u3002",
			9e3: "\u60a8\u8fd8\u6ca1\u6709\u7528\u6237\u540d\uff0c\u4e0d\u80fd\u5728\u672c\u5427\u53d1\u8d34\u3002\u8bf7\u5148\u586b\u5199\u7528\u6237\u540d\u3002",
			402011: "\u56fe\u7247\u5bbd\u5ea6\u8d85\u51fa\u9650\u5236",
			402012: "\u56fe\u7247\u9ad8\u5ea6\u8d85\u51fa\u9650\u5236",
			402013: "\u56fe\u7247\u6807\u7b7e\u65e0\u6548",
			220900: "\u7981\u6b62\u6316\u575f",
			3250012: "\u53d1\u8d34\u5931\u8d25\uff0c\u60a8\u7684\u8d26\u53f7\u5b58\u5728\u88ab\u76d7\u98ce\u9669\uff0c\u8bf7\u5728\u53d1\u8d34\u9875\u9762\u70b9\u51fb\u9a8c\u8bc1"
		},
		auditMessageMap: {
			"-61": "\u60a8\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u4e3a\u4e86\u4fdd\u8bc1\u8d34\u5b50\u8d28\u91cf\uff0c\u672c\u5427\u6240\u53d1\u7684\u8d34\u5b50\u5f85\u7cfb\u7edf\u5ba1\u6838\u901a\u8fc7\u540e\u624d\u80fd\u663e\u793a\uff0c\u8bf7\u60a8\u8010\u5fc3\u7b49\u5f85",
			"-62": "\u60a8\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u4e3a\u4e86\u4fdd\u8bc1\u8d34\u5b50\u8d28\u91cf\uff0c\u672c\u5427\u8d34\u56fe\u7684\u8d34\u5b50\u9700\u8981\u5ba1\u6838\u901a\u8fc7\u540e\u624d\u80fd\u663e\u793a\uff0c\u8bf7\u60a8\u8010\u5fc3\u7b49\u5f85",
			"-74": "\u60a8\u53d1\u8868\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u7cfb\u7edf\u9700\u8981\u6838\u5b9e\u8be5\u8d34\u5b50\u5185\u5bb9\u662f\u5426\u542b\u6709\u4e0d\u826f\u4fe1\u606f\uff0c\u8d34\u5b50\u5728\u5ba1\u6838\u901a\u8fc7\u540e\u624d\u80fd\u663e\u793a\uff0c\u8bf7\u60a8\u8010\u5fc3\u7b49\u5f85",
			"-75": "\u60a8\u53d1\u8868\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u7cfb\u7edf\u9700\u8981\u6838\u5b9e\u8be5\u8d34\u5b50\u5185\u5bb9\u662f\u5426\u542b\u6709\u4e0d\u826f\u4fe1\u606f\uff0c\u8d34\u5b50\u5728\u5ba1\u6838\u901a\u8fc7\u540e\u624d\u80fd\u663e\u793a\uff0c\u8bf7\u60a8\u8010\u5fc3\u7b49\u5f85",
			"-60": "\u60a8\u53d1\u8868\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u7cfb\u7edf\u9700\u8981\u6838\u5b9e\u8be5\u8d34\u5b50\u5185\u5bb9\u662f\u5426\u542b\u6709\u4e0d\u826f\u4fe1\u606f\uff0c\u8d34\u5b50\u5728\u5ba1\u6838\u901a\u8fc7\u540e\u624d\u80fd\u663e\u793a\uff0c\u8bf7\u60a8\u8010\u5fc3\u7b49\u5f85",
			"-70": "\u60a8\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u4e3a\u4e86\u63a7\u5236\u5e7f\u544a\u8d34\uff0c\u9700\u8981\u901a\u8fc7\u5ba1\u6838\u540e\u624d\u80fd\u53d1\u5e03\u3002\u767b\u9646\u7f72\u540d\u53d1\u8d34\u4e0d\u53d7\u6b64\u9650\u5236\u3002",
			"-71": "\u60a8\u53d1\u8868\u7684\u5e16\u5b50\u592a\u957f\u4e86\u3002\u4e3a\u4e86\u9632\u6b62\u704c\u6c34\uff0c\u9700\u7cfb\u7edf\u5ba1\u6838\u540e\u624d\u80fd\u663e\u793a\uff0c\u8bf7\u7a0d\u540e\u67e5\u770b",
			"default": "\u60a8\u53d1\u8868\u7684\u8d34\u5b50\u5df2\u7ecf\u6210\u529f\u63d0\u4ea4\uff0c\u4f46\u7cfb\u7edf\u9700\u8981\u6838\u5b9e\u8be5\u8d34\u5b50\u5185\u5bb9\u662f\u5426\u542b\u6709\u4e0d\u826f\u4fe1\u606f\uff0c\u8d34\u5b50\u5728\u5ba1\u6838\u901a\u8fc7\u540e\u624d\u80fd\u663e\u793a\uff0c\u8bf7\u60a8\u8010\u5fc3\u7b49\u5f85"
		},
		handlerMap: {}
	}
}), _.Module.define({
	path: "poster/widget/post_service",
	requires: ["poster/widget/post_service/post_result_handler_manager", "poster/widget/params_xss_handler", "poster/widget/bsk_service"],
	sub: {
		_defaultData: {
			ie: "utf-8",
			kw: "",
			fid: "",
			tid: "",
			vcode_md5: "",
			floor_num: 0,
			rich_text: 1,
			tbs: 0,
			content: "",
			basilisk: 1
		},
		posting: !1,
		submitUrl: {
			thread: "/f/commit/thread/add",
			reply: "/f/commit/post/add",
			vpostThread: "/vpost/addthread",
			vpostReply: "/vpost/addpost",
			timeaxisThread: "/frsstar/commit/agency/addTimeline",
			timeaxisVpostThread: "",
			repost: "/relay/commit",
			guessingThreadNew: "/tbmall/guess/add",
			repostNew: "/relay/commitNew"
		},
		initial: function(t) {
			var e = this;
			t = $.extend({}, t);
			var r = t.blockInfo || {};
			this.resultHandlerManager = this.requireInstance("poster/widget/post_service/post_result_handler_manager", [r]), this.paramsXssHandler = this.requireInstance("poster/widget/params_xss_handler"), this.bind("retry", function(t, r) {
				e._retryHandler(r)
			}), this.bind("retryPost", function(t, r) {
				e.retryPost(r)
			}), this.bind("uegPostParameter", function() {
				e.uegPostParameter()
			})
		},
		isPosting: function() {
			return this.posting
		},
		post: function(t, e, r) {
			this.postDataCache = e, this.postContextCache = r, this.postTypeCache = t;
			var a = this;
			if(this.posting) return this;
			this.posting = !0;
			var i = $.extend({}, this._defaultData);
			r && $.extend(i, this._extractDataFromContext(r)), $.extend(i, e), i.__type__ = t;
			var s = this.submitUrl[t];
			return this.bskService = this.requireInstance("poster/widget/bsk_service"), this.bskService.slientEncrypt({
				tbs: i.tbs
			}, i).then(function(t) {
				$.ajax({
					type: "post",
					url: s,
					data: a.paramsXssHandler.xssFilter(t),
					success: function(e) {
						var r = e.err_code || e.no;
						if(1990055 === r) $("#rich_ueditor_tpl .j_submit").toggleClass("btn_default"), $("#rich_ueditor_tpl .j_submit").toggleClass("btn_disable"), $("#rich_ueditor_tpl .j_posting_status").toggleClass("poster_posting_status_loading"), $.tb.checkRealName();
						else {
							var i = e.error || "\u697c\u4e3b",
								s = a.resultHandlerManager.getHandler(r, i);
							s.call(a, e, t)
						}
					},
					error: function() {
						var t = "\u7f51\u901f\u6709\u70b9\u4e0d\u7ed9\u529b\u54e6~\u8bf7\u5c1d\u8bd5\u91cd\u65b0\u63d0\u4ea4\u4e00\u4e0b\u5427\uff01";
						a._errorHandler ? (a._errorHandler.call(a, t), a.trigger("error")) : $.tb.alert({
							title: "\u53d1\u8d34\u5931\u8d25",
							message: t,
							buttons: [{
								text: "\u786e\u5b9a",
								callback: function() {
									a.trigger("complete")
								}
							}]
						})
					},
					complete: function() {
						a.posting = !1
					},
					dataType: "json"
				})
			}), this
		},
		setErrorHandler: function(t) {
			return "function" == typeof t ? (this._errorHandler = t, this.resultHandlerManager.setDefaultHandler(t), !0) : !1
		},
		_extractDataFromContext: function(t) {
			return {
				kw: t.forum.name,
				fid: t.forum.id,
				tid: t.thread ? t.thread.id : 0,
				tbs: t.tbs,
				floor_num: t.floor
			}
		},
		_retryHandler: function(t) {
			this.post(t.__type__, t)
		},
		success: function(t) {
			return this.bind("success", t), this
		},
		error: function(t) {
			return this.bind("error", t), this
		},
		complete: function(t) {
			return this.bind("complete", t), this
		},
		uegPostParameter: function() {
			$.extend(this._defaultData, {
				ueg_complain_flag: 1
			})
		},
		retryPost: function() {
			this.post(this.postTypeCache, this.postDataCache, this.postContextCache)
		},
		retry: function(t) {
			return this._retryHandler = t, this
		}
	}
});
_.Module.define({
	path: "poster/widget/topic_suggestion",
	sub: {
		$btn: null,
		$input: null,
		$btnSugContainer: null,
		$inputSugContainer: null,
		$inputSugBehindBox: null,
		$sugList: null,
		btnSugWidth: 274,
		initial: function(i) {
			this.$btn = i.$btn || null, this.$input = i.$input || null, this.$btn && this.btnEvent(), this.$btn && this.inputSugBehind(), this.$input && this.inputSugEvent(), this.$input && this.bindUpDownEvent()
		},
		addBtnSugPanel: function() {
			function i(i, n) {
				for(var s = "", e = 0; e < i.length; e++) s = s + '<li class="topic_item"><span class="topic_name">' + i[e].topic_name + "</span></li>";
				for(var o = "", e = 0; e < n.length; e++) o = 3 > e ? o + '<li class="topic_item"><span class="topic_flag_hot">' + (e + 1) + '</span><span class="topic_name">' + n[e].topic_name + '</span><span class="topic_num">' + n[e].discuss_num + "</span></li>" : o + '<li class="topic_item"><span class="topic_flag">' + (e + 1) + '</span><span class="topic_name">' + n[e].topic_name + '</span><span class="topic_num">' + n[e].discuss_num + "</span></li>";
				var a = '<div class="topic_list_box"><div class="topic_list_title">\u5e38\u7528\u70ed\u8bae\u8bdd\u9898</div><ul class="topic_list_common topic_list"></ul></div>',
					p = '<div class="topic_list_box"><div class="topic_list_title">\u70ed\u8bae\u699c\u5355</div><ul class="topic_list_hot topic_list"></ul></div>',
					c = i.length ? a + p : "" + p;
				t.$btnSugContainer.find(".topic_loading").remove(), t.$btnSugContainer.find(".topic_container").append(c), t.$btnSugContainer.find(".topic_list_common").append(s), t.$btnSugContainer.find(".topic_list_hot").append(o), t.$btnSugContainer.find(".topic_item").off("click").on("click", function() {
					var i = "#" + $(this).find(".topic_name").text() + "# ",
						n = t.$input.val();
					t.$input.focus().val(i + n)
				})
			}
			var t = this,
				n = '<div class="topic_sug_box_wrapper"><div class="topic_sug_box"><div class="topic_sug_box_caret"></div><div class="topic_sug_box_body"><div class="topic_container"><div class="topic_header"><a href="#">#\u63d2\u5165\u6211\u7684\u65b0\u8bdd\u9898#</a></div><div class="topic_loading">\u8bdd\u9898\u52a0\u8f7d\u4e2d...</div></div></div></div></div>';
			this.$btnSugContainer = $(n), $("body").append(this.$btnSugContainer), this.$btnSugContainer.css({
				left: this.$btn.offset().left - this.btnSugWidth / 2 + 30,
				top: this.$btn.offset().top + 30
			}), this.$btnSugContainer.find(".topic_header").off("click").click(function(i) {
				i.preventDefault();
				var t = document.querySelector(".j_topic_sug_input");
				if(t.value = "##", t.createTextRange) {
					var n = t.createTextRange();
					n.move("character", 1), n.select()
				} else(t.selectionStart || 0 === t.selectionStart) && t.setSelectionRange(1, 1);
				t.focus()
			}), $.ajax({
				type: "POST",
				url: "/hottopic/browse/topicList",
				data: {}
			}).done(function(t) {
				var n = t.data.user_his_topic.topic_list.slice(0, 3),
					s = t.data.bang_topic.topic_list.slice(0, 10);
				i(n, s)
			})
		},
		btnEvent: function() {
			var i = this;
			this.$btn.off("click").on("click", function() {
				$(".topic_sug_box_wrapper").remove(), i.addBtnSugPanel(), $.stats.track("\u8bdd\u9898\u5feb\u6377\u5f39\u7a97:\u6807\u9898\u65c1", "\u5427\u53cb\u70ed\u8bae", "frs", "click", {
					client_type: "pc_web"
				})
			}), $(document).click(function(t) {
				$target = $(t.target), $target[0].className != i.$btn[0].className && $(".topic_sug_box_wrapper").remove(), i.$inputSugContainer.hide()
			})
		},
		inputSugBehind: function() {
			var i = this,
				t = $('<div class="input_sug_behind_box" style="visibility: hidden; position: absolute; top: -1000px;"></div>');
			t.css({
				width: i.$input.css("width"),
				height: i.$input.css("height"),
				"line-height": i.$input.css("height"),
				padding: i.$input.css("padding"),
				"font-size": i.$input.css("font-size"),
				"border-width": i.$input.css("border-width"),
				left: i.$input.offset().left
			}), $("body").append(t), this.$inputSugBehindBox = t
		},
		appendCharToBehind: function(i, t) {
			var n = i.substr(0, t).replace(/\s/g, "&nbsp;"),
				s = i.substr(t + 1).replace(/\s/g, "&nbsp;");
			i = n + '<span class="jing">#</span>' + s, this.$inputSugBehindBox.html(i)
		},
		inputSugEvent: function() {
			var i = this,
				t = '<div class="topic_input_sug_wrapper"><div class="topic_input_sug_wrapper_tip">\u60f3\u7528\u4ec0\u4e48\u8bdd\u9898?</div><ul class="topic_input_sug_list"></ul></div>',
				n = $(t);
			this.$sugList = n, n.hide(), 0 == $(".topic_input_sug_wrapper").length && $("body").append(n), this.$inputSugContainer = n, this.$inputSugContainer.hide();
			var s = 0,
				e = 0,
				o = 0,
				a = !1,
				p = null,
				c = null;
			this.$input.off("keyup").on("keyup", function(t) {
				var u = t.which;
				s = $(this).caret();
				var l = $(this).val();
				if("#" == p && !a) {
					o = s - 1, a = !0;
					var d = l.replace(/[><]/g, "&");
					i.appendCharToBehind(d, o), i.$inputSugContainer.css({
						left: i.$inputSugBehindBox.find(".jing").offset().left,
						top: i.$input.offset().top + 32
					}), i.$inputSugContainer.show()
				}
				if(a && $(".pprefix-list").remove(), a && 8 != u && (a = !0, i.$inputSugContainer.show()), a && 8 == u && ("#" == p ? (a = !1, i.$inputSugContainer.hide()) : (a = !0, i.$inputSugContainer.show())), p = l.split("")[s - 1] || null, e = s, a) {
					if(38 == u || 40 == u || 13 == u) return;
					var r = l.substring(o + 1, s);
					i.$inputSugContainer.hide(), c = (new Date).getTime(), $.ajax({
						type: "GET",
						url: "/hottopic/browse/topicList?prefix=" + r + "&timestamp=" + c
					}).done(function(t) {
						var e = null;
						if(t.data.timestamp == c || "" == $.trim(r)) {
							"" == $.trim(r) ? e = t.data.bang_topic.topic_list.slice(0, 8) : (e = t.data.sug_topic.topic_list.slice(0, 8), 0 == t.data.sug_topic.topic_list.length && i.$inputSugContainer.hide());
							for(var u = e.length, d = "", h = 0; u > h; h++) d = d + "<li>" + e[h].topic_name + "</li>";
							n.find("ul").html(d), n.find("li").off("click").on("click", function() {
								var t = "#" + $(this).text() + "# ",
									n = i.$input.val();
								n = n.substring(0, o) + t + n.substring(s), i.$input.focus().val(n), a = !1, p = " "
							}), u ? i.$inputSugContainer.show() : i.$inputSugContainer.hide(), n.find("li").removeClass("focus"), n.find("li:eq(0)").addClass("focus"), ("" == $.trim(l) || 0 == s) && (a = !1, i.$inputSugContainer.hide())
						}
					})
				}
			})
		},
		bindUpDownEvent: function() {
			var i = this;
			this.$input.off("keydown").on("keydown", function(t) {
				var n = i.$sugList.find("li").filter(".focus");
				13 == t.which && n.trigger("click"), 40 == t.which && (t.preventDefault(), n.next("li").length ? n.next("li").addClass("focus") : i.$sugList.find("li:eq(0)").addClass("focus"), n.removeClass("focus")), 38 == t.which && (t.preventDefault(), n.prev("li").length ? n.prev("li").addClass("focus") : i.$sugList.find("li:last").addClass("focus"), n.removeClass("focus"))
			})
		}
	}
});
_.Module.define({
	path: "poster/widget/post_prefix",
	sub: {
		initial: function(e) {
			this.$titleWrap = $(".j_title_wrap"), this.$target = e.$target, this.prefix = e.prefix || {}, this.hotTopic = e.hotTopic, this.prefix.value && (this.prefix.value = this.prefix.value.replace("&amp;", "&")), this.hotTopic ? (this.$target.val(this.hotTopic), this.$target.data("hotTopic", this.hotTopic)) : this.$target.val(this.prefix.value), this.$target.data("prefix", this.prefix.value), this.feedbackBarId = "898666", this.appendPrefixToBody(), this.prefix.need_sug && (this.pickPrefix(this.$target, this.prefix.sug_html, this.hotTopic), this.autoResponse(this.$target, this.prefix.sug_html))
		},
		appendPrefixToBody: function() {
			this.$wrapper = $('<a class="pprefix-list"></a>'), this.$wrapper.appendTo("body").css({
				display: "none",
				"box-sizing": "border-box"
			}), PageData.forum.id == this.feedbackBarId && (this.$autoRes_wrapper = $('<a class="auto-pprefix-list"></a>'), this.$autoRes_wrapper.appendTo("body").css({
				display: "none",
				"box-sizing": "border-box"
			})), this.unsetAutoRespPrefix()
		},
		setAutoRespPrefix: function() {
			var e = this;
			e.$titleWrap.find(".j_title").removeClass("normal-prefix").addClass("auto-resp-prefix")
		},
		unsetAutoRespPrefix: function() {
			var e = this;
			e.$titleWrap.find(".j_title").removeClass("auto-resp-prefix").addClass("normal-prefix")
		},
		showNormalPrefix: function(e) {
			var t = this;
			t.$wrapper.css({
				width: e.outerWidth() + "px",
				left: e.offset().left + "px",
				top: e.offset().top + e.outerHeight() - 1 + "px"
			}).show(), PageData.forum.id == this.feedbackBarId && t.$autoRes_wrapper.hide()
		},
		autoResponse: function(e) {
			function t(e, t) {
				"up" == e ? 0 > o - 1 ? o = s.length - 1 : o-- : "down" == e ? o + 1 == s.length ? o = 0 : o++ : "mouse" == e && (o = t), p.$autoRes_wrapper.is(":visible") || (f.showPPrefix(), o = 0), s && s.removeClass("pprefix-item-shine").eq(o).addClass("pprefix-item-shine")
			}

			function i(t) {
				var i = e.data("prefix");
				e.val(i + t), p.$autoRes_wrapper.hide(), setTimeout(function() {
					e.trigger("focus")
				}, 100)
			}

			function r(e) {
				$.post("/hermes/suggestion", {
					kw: e,
					ie: "utf-8"
				}, function(e) {
					e.errno || a(e.query_match)
				}, "json")
			}

			function a(e) {
				if(0 == e.length) return f.hidePPrefix(), !1;
				for(var t = "", i = 0, r = e.length; r > i; i++) t += '<div class="pprefix-item" data-id="' + e[i].id + '">' + e[i].title + "</div>";
				"" != t ? p.$autoRes_wrapper.html(t) : "", f.showPPrefix(), s = p.$autoRes_wrapper.children()
			}
			if(PageData.forum.id != this.feedbackBarId) return !1;
			var s = "",
				o = -1,
				p = this,
				f = {
					showPPrefix: function() {
						p.$autoRes_wrapper.css({
							width: e.outerWidth() - 138 + "px",
							left: e.offset().left + 138 + "px",
							top: e.offset().top + e.outerHeight() - 1 + "px"
						}).show(), p.$wrapper.hide()
					},
					hidePPrefix: function() {
						o = -1, "" != s ? s.removeClass("pprefix-item-shine") : "", p.$autoRes_wrapper.hide(), p.setAutoRespPrefix()
					},
					autoResItemClickStat: function(e) {
						$.post("/hermes/commit/sughit", {
							id: e
						}, function() {}, "json")
					}
				};
			p.$titleWrap.on("click.showPPrefix", ".auto-resp-prefix", function() {
				p.showNormalPrefix(e), p.unsetAutoRespPrefix()
			}).on("blur.hidePPrefix", ".auto-resp-prefix", function() {
				f.hidePPrefix()
			}).on("keyup", ".auto-resp-prefix", function(a) {
				switch(a.keyCode) {
					case 40:
						a.preventDefault(), t("down");
						break;
					case 38:
						a.preventDefault(), t("up");
						break;
					case 13:
						a.preventDefault(), -1 != o && (p.$autoRes_wrapper.find(".pprefix-item-shine").html() ? i(p.$autoRes_wrapper.find(".pprefix-item-shine").html()) : "", f.hidePPrefix(), p.setAutoRespPrefix());
						break;
					case 27:
						p.$autoRes_wrapper.is(":visible()") && (a.preventDefault(), f.hidePPrefix());
					case 8:
					default:
						var s = e.val(),
							n = "";
						if(PageData.forum.id != p.feedbackBarId || -1 == s.indexOf("\u3010\u6c42\u52a9\u54a8\u8be2\u3011")) return o = -1, f.hidePPrefix(), !1;
						var u = -1 == s.indexOf("\u4e28") ? s.indexOf("|") : s.indexOf("\u4e28"); - 1 == u ? u = s.indexOf("\uff5c") : "", n = s.substring(u + 1, s.length), "" != n ? r(n) : f.hidePPrefix(), p.setAutoRespPrefix()
				}
			}), p.$autoRes_wrapper.on("mousedown.pick", ".pprefix-item", function() {
				f.autoResItemClickStat($(this).data("id")), i($(this).html())
			}).on("mouseover", ".pprefix-item", function() {
				t("mouse", $(this).index())
			})
		},
		pickPrefix: function(e, t) {
			function i() {
				f.$wrapper.css({
					width: e.outerWidth() + "px",
					left: e.offset().left + "px",
					top: e.offset().top + e.outerHeight() - 1 + "px"
				}).show(), PageData.forum.id == f.feedbackBarId && f.$autoRes_wrapper.hide()
			}

			function r() {
				p = -1, o.removeClass("pprefix-item-shine"), f.$wrapper.hide(), PageData.forum.id == f.feedbackBarId && e.val().indexOf("\u3010\u6c42\u52a9\u54a8\u8be2\u3011") > -1 && f.setAutoRespPrefix()
			}

			function a(t) {
				var i, r = e.val(),
					a = e.data("prefix"),
					s = e.data("hotTopic");
				console.log(s), i = a && r.indexOf(a) > -1 ? r.replace(a, t) : t, s ? e.val(s + i).data("prefix", t).data("hotTopic", "") : e.val(i).data("prefix", t), -1 == e.val().indexOf("\u3010\u6c42\u52a9\u54a8\u8be2\u3011") && f.unsetAutoRespPrefix(), setTimeout(function() {
					e.trigger("focus")
				}, 100)
			}

			function s(e, t) {
				"up" == e ? 0 > p - 1 ? p = o.length - 1 : p-- : "down" == e ? p + 1 == o.length ? p = 0 : p++ : "mouse" == e && (p = t), f.$wrapper.is(":visible") || (i(), p = 0), o.removeClass("pprefix-item-shine").eq(p).addClass("pprefix-item-shine")
			}
			var o, p = -1,
				f = this;
			f.$wrapper.html(t), o = f.$wrapper.children(), f.$titleWrap.on("click.showPPrefix", ".normal-prefix", function() {
				f.showNormalPrefix(e), f.unsetAutoRespPrefix()
			}).on("blur.hidePPrefix", ".normal-prefix", function() {
				r()
			}).on("keydown", ".normal-prefix", function(t) {
				switch(t.keyCode) {
					case 8:
						i();
						break;
					case 40:
						t.preventDefault(), s("down");
						break;
					case 38:
						t.preventDefault(), s("up");
						break;
					case 13:
						t.preventDefault(), -1 != p && ($(".pprefix-item-shine").html() ? a($(".pprefix-item-shine").html()) : "", r(), PageData.forum.id == f.feedbackBarId && e.val().index("\u3010\u6c42\u52a9\u54a8\u8be2\u3011") > -1 && f.setAutoRespPrefix());
						break;
					case 27:
						f.$wrapper.is(":visible") && (t.preventDefault(), r());
					default:
						p = -1, r()
				}
			}), f.$wrapper.on("mousedown.pick", ".pprefix-item", function() {
				a($(this).html())
			}).on("mouseover", ".pprefix-item", function() {
				s("mouse", $(this).index())
			})
		}
	}
});
_.Module.define({
	path: "tbui/widget/word_limit",
	sub: {
		checkTimer: null,
		isShow: !1,
		exceed: !1,
		initial: function(i) {
			var t = {
					container: $("body"),
					inputObj: null,
					checkDelay: 50,
					showLimit: 10,
					maxNum: 120,
					isLimitInput: !1,
					autoPos: !0,
					numStyle: {},
					limitStyle: {}
				},
				e = $.extend(!0, t, i);
			this.container = $(e.container), this.inputObj = $(e.inputObj), this.showLimit = e.showLimit, this.option = e, this.holder = $('<div class="w_limit_wrapper "></div>'), this.container.append(this.holder)
		},
		init: function() {
			var i = this.option,
				t = this;
			if(null != i.inputObj) {
				var e = $(i.inputObj);
				e.keydown(function(i) {
					return t.handlerEvent(i), !0
				}), e.focus(function(i) {
					return t.handlerEvent(i), !0
				}), e.bind("input", function(i) {
					return t.handlerEvent(i), !0
				}), e.bind("propertychange", function(i) {
					return t.handlerEvent(i), !0
				})
			}
		},
		setLimitStyle: function(i) {
			this.holder.css(i)
		},
		hideWordLimit: function() {
			this.trigger("wlhiding"), this.holder.hide(), this.isShow = !1, clearTimeout(this.checkTimer)
		},
		autoPosition: function() {
			var i = this.inputObj.offset(),
				t = this.inputObj.width(),
				e = $(document).width();
			this.holder.css({
				top: i.top - this.holder.height() - 5,
				right: e - t - i.left - 9
			})
		},
		handlerEvent: function() {
			clearTimeout(this.checkTimer);
			var i = this.option,
				t = this;
			t.blur = !1, this.checkTimer = setTimeout(function() {
				t.check()
			}, i.checkDelay)
		},
		check: function() {
			var i = this.option,
				t = this.inputObj,
				e = t.val(),
				h = $.tb.getByteLength(e),
				n = i.maxNum - h;
			if(i.isLimitInput && 0 > n && t.val($.tb.subByte(e, i.maxNum + (0 > n && n > -2 ? n : 0), "")), n = i.maxNum - $.tb.getByteLength(t.val()), n <= this.showLimit) {
				i.autoPos ? this.autoPosition() : this.trigger("onSetPosition"), this.holder.show(), this.isShow = !0;
				var s = Math.ceil(n / 2);
				0 > n ? (s = Math.floor(n / 2), this.exceed || (this.trigger("overflow"), this.exceed = !0), this.trigger("wlshowing"), this.holder.html('\u5df2\u7ecf\u8d85\u51fa<span class="w_limit_num" style="color:#f00;">' + -s + "</span>\u4e2a\u5b57")) : (this.exceed && (this.trigger("unoverflow"), this.exceed = !1), this.trigger("wlshowing"), 0 == n ? this.holder.html('\u8fd8\u53ef\u8f93\u5165<span class="w_limit_num" style="color:#ff0000;">' + s + "</span>\u4e2a\u5b57") : this.holder.html('\u8fd8\u53ef\u8f93\u5165<span class="w_limit_num" style="color:#929292;">' + s + "</span>\u4e2a\u5b57"))
			} else this.isShow && (this.trigger("wlhiding"), this.holder.hide(), this.isShow = !1, this.exceed && (this.trigger("unoverflow"), this.exceed = !1))
		}
	}
});
! function() {
	var t = function() {
		this._callbackArray = []
	};
	t.prototype = {
		add: function(t) {
			return "function" != typeof t || this.has(t) ? !1 : (this._callbackArray.push(t), t)
		},
		remove: function(t) {
			if("function" == typeof t) {
				var n = this.index(t);
				if(n > -1) return t = this._callbackArray.splice(n, 1)
			}
			return !1
		},
		has: function(t) {
			return this.index(t) > -1
		},
		index: function(t) {
			if(this._callbackArray)
				for(var n = 0, r = this._callbackArray.length; r > n; n++)
					if(t === this._callbackArray[n]) return n;
			return -1
		},
		fire: function() {}
	};
	var n = function() {};
	n.prototype = new t, n.prototype.fire = function(t, n) {
		for(var r = 0, e = this._callbackArray.length, i = $.extend({}, n); e > r; r++) {
			var a = this._callbackArray[r],
				o = a(t, i);
			"object" == typeof o && (i = $.extend({}, i, o))
		}
		return i
	};
	var r = function() {};
	r.prototype = new t, r.prototype.fire = function(t) {
		for(var n = 0, r = this._callbackArray.length; r > n; n++) {
			var e = this._callbackArray[n],
				i = e(t);
			if("string" == typeof i && i.length) return i;
			if("string" == typeof i && 0 === i.length) return "NOT_SHOW_WARNING"
		}
		return ""
	};
	var e = $.Callbacks("unique"),
		i = $.Callbacks("unique"),
		a = new n,
		o = new r;
	_.Module.define({
		path: "poster/widget/post_manager",
		sub: {
			initial: function() {},
			addPostSuccess: function(t) {
				return "function" == typeof t ? (e.add(t), !0) : !1
			},
			firePostSuccess: function(t) {
				var n = $.extend({}, PosterContext, t);
				e.fire(n)
			},
			addEditorReady: function(t) {
				return "function" == typeof t ? (i.add(t), !0) : !1
			},
			fireEditorReady: function(t) {
				i.fire(t)
			},
			addPostDataProcess: function(t) {
				return "function" == typeof t ? (a.add(t), !0) : !1
			},
			firePostDataProcess: function(t, n) {
				return a.fire(t, n)
			},
			addPostValidate: function(t) {
				return "function" == typeof t ? (o.add(t), !0) : !1
			},
			firePostValidate: function(t) {
				return o.fire(t)
			}
		}
	})
}(window);
_.Module.define({
	path: "bawu/widget/complaint_bar_owner/complaint_bar_owner_template",
	sub: {
		wrapper: ['<div class="complaint_wrapper">', '    <div class="complaint_hd">', "        <p>", '            <span class="required_symbol">*</span> \u60a8\u7684\u6295\u8bc9\u4fe1\u606f\u53ea\u6709\u7ba1\u7406\u5458\u548c\u60a8\u81ea\u5df1\u80fd\u770b\u5230\uff0c\u5176\u4ed6\u7528\u6237\u65e0\u6cd5\u83b7\u53d6\uff0c\u8bf7\u60a8\u653e\u5fc3\u6295\u8bc9\u3002', "        </p>", "    </div>", '    <div class="complaint_bd">', '        <div class="row">', '            <label class="label">\u5427\u4e3bID\uff1a</label>', "        <% if (uname) { %>", '            <input class="bar_owner_id j_bar_owner_id text_readonly" readonly  value="<%=uname%>" type="text">', "        <%} else {%>", '            <input class="bar_owner_id j_bar_owner_id" value="" type="text">', "        <% } %>", "        </div>", '        <div class="id_remind"></div>', '        <div class="container_layer bar_type j_bar_type">', "        </div>", '        <div class="row">', '            <label class="label">\u6295\u8bc9\u7c7b\u578b\uff1a</label>', "        </div>", '        <div class="row j_complaint_type">', '            <input id="type5" type="radio" name="reason" class="radio first_radio" value="illegal_delpost">', '            <label for="type5">\u5427\u4e3b\u8fdd\u89c4\u5c01\u7981\u5220\u5e16</label>', '            <input id="type6" type="radio" name="reason" class="radio" value="illegal_addpost">', '            <label for="type6">\u5427\u4e3b\u8fdd\u89c4\u53d1\u8d34\u64cd\u4f5c</label>', '            <input id="type7" type="radio" name="reason" class="radio" value="illegal_interest">', '            <label for="type7">\u5427\u4e3b\u6d89\u5acc\u8c0b\u79c1\u83b7\u5229</label><br>', '            <input id="type8" type="radio" name="reason" class="radio first_radio" value="illegal_post_info">', '            <label for="type8">\u5427\u5185\u5b58\u5728\u5927\u91cf\u8fdd\u89c4\u4fe1\u606f</label>', '            <input id="type3" type="radio"  name="reason" class="radio" value="sex">', '            <label for="type3">\u5427\u5185\u5b58\u5728\u9ec4\u8272\u7b49\u8fdd\u6cd5\u4fe1\u606f</label><br>', '            <input id="type4" type="radio" name="reason"  class="radio first_radio" value="else">', '            <label for="type4">\u5427\u4e3b\u5176\u4ed6\u8fdd\u89c4\u884c\u4e3a</label>', '            <input id="type1" type="radio" name="reason" class="radio" value="nologin">', '            <label for="type1">\u5427\u4e3b\u957f\u671f\u672a\u767b\u5f55</label>', "        </div>", '        <div class="container_layer complaint_reason j_complaint_reason">', '            <span class="arrow"></span>', '            <div class="container_hd"></div>', '            <div class="container_bd">', '                <label><span class="required_symbol">*</span>\u6295\u8bc9\u7406\u7531\uff1a</label>  <span></span>', '                <textarea class="textarea" id="" name="" cols="30" rows="10"></textarea>', "            </div>", '            <div class="container_ft"></div>', "        </div>", "    </div>", '    <div class="complaint_ft">', '        <a class="submit_btn j_submit_btn disable"  href="javascript:;">\u63d0\u4ea4</a>', "    </div>", "</div>"].join(""),
		barItem: ['<span class="arrow"></span>', '<div class="container_hd"></div>', '<div class="container_bd">', '   <label><span class="required_symbol">*</span>\u8d34\u5427\u540d\u79f0\uff1a</label>', '<div class="radio_panel">', "<% for (var i = 0; i < roles.length; i++) {%>", '   <input type="radio" id="forum<%=i%>" name="type" <% if (i === 0 && roles.length === 1) {%> checked=true<%}%> class="radio" value="<%=roles[i]["forum_id"] %>" data-name="<%=roles[i]["forum_name"] %>" >', '   <label title="<%:=roles[i]["forum_name"] %>" for="forum<%=i%>"><%:=roles[i]["forum_name"] %></label>', "   <% if (i === 2) {%>", "       </br>", "    <%}%>", "<% } %>", "</div>", "</div>", '<div class="container_ft"></div>'].join(""),
		success: ['<div class="complaint_success">', '   <h3 class="title">\u6295\u8bc9\u4fe1\u606f\u63d0\u4ea4\u6210\u529f</h3>', '   <div class="j_result">\u6211\u4eec\u5c06\u5728\u5ba1\u6838\u5b8c\u6bd5\u540e2-3\u4e2a\u5de5\u4f5c\u65e5\u5185\u5904\u7406\u60a8\u7684\u6295\u8bc9\u3002\u5904\u7406\u7ed3\u679c\u5c06\u901a\u8fc7', '       <a href="http://msg.baidu.com/msg/sys#msgcontent" target="_blank">\u7cfb\u7edf\u901a\u77e5</a>\u53d1\u9001\u7ed9\u60a8\u3002\u60a8\u4e5f\u53ef\u4ee5\u53bb<a target="_blank" href="//tieba.baidu.com/f?kw=%e5%85%a8%e6%b0%91%e4%b8%be%e6%8a%a5&fr=ala0">\u5168\u6c11\u4e3e\u62a5\u5427</a>\u53cd\u9988\u95ee\u9898\u3002', "   </div>", '   <a class="j_close_btn close_btn"  href="javascript:;">\u5173\u95ed</a>', "</div>"].join(""),
		fail: ['<div class="complaint_fail">', '   <h3 class="title">\u6295\u8bc9\u4fe1\u606f\u63d0\u4ea4\u5931\u8d25</h3>', '   <div class="j_result">', '       <p class="j_error_remind error_remind"></p>', '       <a class="j_back_btn"  href="javascript:;">\u8fd4\u56de</a>\u4e0a\u4e00\u7ea7\u9875\u9762<br/>\u60a8\u53ef\u4ee5\u53bb', '       <a target="_blank" href="//tieba.baidu.com/f?kw=%CC%F9%B0%C9%BC%E0%BF%D8&fr=ala0">\u8d34\u5427\u76d1\u63a7\u5427</a>\u53cd\u9988\u95ee\u9898\u3002', "   </div>", '   <a class="j_close_btn close_btn"  href="javascript:;">\u5173\u95ed</a>', "</div>"].join("")
	}
}), _.Module.define({
	path: "bawu/widget/complaint_bar_owner",
	requires: ["bawu/widget/complaint_bar_owner/complaint_bar_owner_template"],
	sub: {
		isAddDialogTop: !1,
		initial: function(a) {
			this.options = $.extend({
				uname: ""
			}, a), this.template = this.requireInstance("bawu/widget/complaint_bar_owner/complaint_bar_owner_template"), this.complaintWrapperTemplate = baidu.template(this.template.wrapper, this.options), this.complaintFailTemplate = this.template.fail, this.complaintSuccessTemplate = this.template.success, this.barItemTemplate = this.template.barItem, this.defaultFormData = {
				manager_uid: "",
				manager_uname: "",
				forum_id: "",
				forum_name: "",
				complaint_type: "",
				reason: "",
				tbs: PageData.tbs
			}, this.initDialog(), this._bindEvent()
		},
		initDialog: function() {
			if(this.$dialog) this.$dialog.setContent(this.complaintWrapperTemplate);
			else {
				this.$dialog = new $.dialog({
					html: this.complaintWrapperTemplate,
					title: "\u6295\u8bc9\u5427\u4e3b",
					show: !1,
					width: 500,
					holderClassName: "complaint_bar_owner_dialog"
				});
				var a = this;
				this.$dialog.bind("onclose", function(e) {
					return e.stopImmediatePropagation(), a.$dialog.hide(), !1
				});
				var e = this.$dialog.hide;
				this.$dialogElement = this.$dialog.element, this.$dialogElement.css("z-index", 51e3), this.$dialog.hide = function() {
					a.isAddDialogTop && (a.$dialogElement.css("top", parseInt(a.$dialogElement.css("top"), 10) + 70), a.isAddDialogTop = !1), e.call(a.$dialog)
				}
			}
			this.$submitBtn = this.$dialogElement.find(".submit_btn"), this.$barTypeList = this.$dialogElement.find(".j_bar_type"), this.$complaintReasonLayer = this.$dialogElement.find(".j_complaint_reason"), this.formData = $.extend({}, this.defaultFormData)
		},
		_bindEvent: function() {
			var a = this,
				e = a.$dialogElement;
			e.on("blur", ".j_bar_owner_id", function(e) {
				var t = $(e.currentTarget),
					i = $.trim(t.val());
				a.checkBarOwnerName(i)
			}).on("keyup", ".j_complaint_reason .textarea", function(e) {
				var t = $(e.currentTarget);
				a.formData.reason = window.encodeURI($.trim(t.val())), a.checkCanSubmit()
			}).delegate(".radio", "click", function(t) {
				var i = $(t.currentTarget);
				"type" === i.tbattr("name") ? (a.formData.forum_id = i.val(), a.formData.forum_name = window.encodeURI(i.data("name"))) : (a.$complaintReasonLayer.show(), a.formData.complaint_type = i.val(), a.isAddDialogTop || (e.css("top", parseInt(e.css("top"), 10) - 70), a.isAddDialogTop = !0)), a.checkCanSubmit()
			}).delegate(".j_submit_btn", "click", function() {
				if(a.checkCanSubmit()) {
					var e = a.formData;
					$.post("/pmc/tousu/commitTousu", e, function(e) {
						var t;
						if(t = 0 === e.errno ? a.complaintSuccessTemplate : a.complaintFailTemplate, a.$resultDialog ? a.$resultDialog.setContent(t) : (a.$resultDialog = new $.dialog({
								html: t,
								title: "\u6295\u8bc9\u5427\u4e3b",
								show: !1,
								width: 500
							}), a.$resultDialog.element.delegate(".j_back_btn", "click", function() {
								a.$dialog.show(), a.$resultDialog.hide()
							}).delegate(".j_close_btn", "click", function() {
								a.$dialog.hide(), a.$resultDialog.hide(), a.formData = $.extend({}, this.defaultFormData)
							}).bind("onclose", function(e) {
								return e.stopImmediatePropagation(), a.$resultDialog.hide(), !1
							})), e.data && e.data.text) {
							var i = a.$resultDialog.element.find(".j_result")[0];
							i.innerHTML = a.htmlDecode(e.data.text)
						}
						a.$resultDialog.show(), a.$dialog.hide()
					}, "json")
				}
			})
		},
		checkBarOwnerName: function(a) {
			var e = this;
			return a ? (a = window.encodeURI(a), $.get("/pmc/tousu/getRole", {
				manager_uname: a
			}, function(t) {
				var i = $.extend({}, e.defaultFormData),
					l = t.data,
					s = t.errno;
				if(0 === s) i = {
					manager_uid: l.manager_uid,
					manager_uname: a
				}, e.$barTypeList.html(baidu.template(e.barItemTemplate, l)), e.$dialogElement.removeClass("check_error"), 1 === l.roles.length && (i.forum_id = l.roles[0].forum_id, i.forum_name = window.encodeURI($("<span>" + l.roles[0].forum_name + "</span>").text()));
				else {
					var o = {
							207: "\u8be5\u5427\u4e3b\u4e3a\u5b98\u65b9\u6307\u5b9a\u5427\u4e3b\uff0c\u6709\u4e13\u95e8\u4eba\u5458\u8fdb\u884c\u76d1\u7763\uff0c\u76ee\u524d\u4e0d\u63a5\u53d7\u7528\u6237</br>\u6295\u8bc9\u54e6~",
							204: "\u6b64\u4eba\u4e0d\u662f\u5427\u4e3b\u54e6~"
						},
						n = e.$dialogElement.find(".id_remind");
					e.$dialogElement.addClass("check_error"), o[s] && n.html(o[s]), e.$barTypeList.html("")
				}
				$.extend(e.formData, i), e.checkCanSubmit()
			}, "json"), void 0) : (e.formData.manager_uname = "", e.$barTypeList.html(""), e.checkCanSubmit(), void 0)
		},
		checkCanSubmit: function() {
			var a = this;
			for(var e in a.formData)
				if(a.formData.hasOwnProperty(e)) {
					var t = a.formData[e];
					if(void 0 !== t && "" === t) return a.$submitBtn.removeClass("j_submit_btn").addClass("disable"), !1
				}
			return a.$submitBtn.removeClass("disable").addClass("j_submit_btn"), !0
		},
		showDialog: function() {
			this.initDialog(), this.$dialog.show(), this.options && this.options.uname && this.checkBarOwnerName(this.options.uname)
		},
		htmlDecode: function(a) {
			var e = "";
			return 0 === a.length ? "" : (e = a.replace(/&lt;/g, "<"), e = e.replace(/&gt;/g, ">"), e = e.replace(/&nbsp;/g, " "), e = e.replace(/&#39;/g, "'"), e = e.replace(/&quot;/g, '"'), e = e.replace(/<br>/g, "\n"))
		}
	}
});
! function() {
	var e = 0;
	_.Module.define({
		path: "tbui/widget/bubble_tip",
		sub: {
			bubbles: {},
			initial: function(e) {
				var i = {
					content: "",
					arrow_dir: "up",
					bubble_css: {
						width: 170
					},
					arrow_pos: {},
					attr: "",
					wrap: $("body"),
					closeBtn: !1,
					level: 1,
					arrowReq: !0
				};
				this._option = $.extend(!0, i, e), this._event = {}, this.init()
			},
			init: function() {
				this.buildBubble()
			},
			buildBubble: function() {
				var i = this._option,
					t = this.genericTpl(),
					b = i.wrap;
				this.j_bubble = $(t), b.append(this.j_bubble), this.j_bubble.css(i.bubble_css), this.j_bubble.find(".j_ui_triangle").css(i.arrow_pos), this.setContent(i.content), "up" == i.arrow_dir || "down" == i.arrow_dir ? this.j_bubble.find(".j_content").css({
					width: i.bubble_css.width
				}) : this.j_bubble.find(".j_content").css({
					width: i.bubble_css.width - 7
				}), i.closeBtn && this.j_bubble.find(".j_close").show(), i.arrowReq || this.hideArrow(), this._bindEvent(), this.cid = "bubble_" + e, e++
			},
			_bindEvent: function() {
				var e = this._option,
					i = this;
				e.closeBtn && this.j_bubble.find(".j_close").click(function() {
					var e = i.triggerEvent("onclose");
					e && i.closeBubble()
				})
			},
			bind: function(e, i, t) {
				var b = {
					stat: t ? !0 : !1,
					fun: i
				};
				this._event[e] ? this._event[e].push(b) : (this._event[e] = [], this._event[e].push(b))
			},
			triggerEvent: function(e) {
				var i = !0;
				if(this._event[e])
					for(var t = this._event[e], b = 0; b < t.length; b++) t[b].fun && t[b].fun(), t[b].stat || (i = !1);
				return i
			},
			genericTpl: function() {
				var e = this._option.attr,
					i = this._option.arrow_dir;
				return _html = '<div class="ui_bubble_wrap j_wrap" ' + e + ' style="display:none;"><div class="j_content ui_bubble_content ui_bubble_' + i + '"><div class="ui_bubble_body j_body"></div><div class="ui_bubble_closed j_close"></div></div><div class="j_ui_triangle ui_triangle ui_triangle_' + i + '"><div class="ui_triangle_outter ui_arrow_o_' + i + '" ><em>\u25c6</em></div><div class="ui_triangle_inner ui_arrow_i_' + i + '" ><em>\u25c6</em></div></div></div>'
			},
			closeBubble: function() {
				this.j_bubble.remove(), delete this.bubbles[this.cid]
			},
			hideArrow: function() {
				this.j_bubble.find(".ui_triangle").hide()
			},
			hideBubble: function() {
				this.j_bubble.hide()
			},
			showBubble: function(e) {
				if(e)
					if(e.zIndex) this._getBubbleInfo(e.zIndex), this.j_bubble.css({
						"z-index": e.zIndex
					}), this.showByTime(e.type, e.time);
					else {
						this._getBubbleInfo();
						var i = this._handleCover();
						i || this.showByTime(e.type, e.time)
					}
				else {
					this._getBubbleInfo();
					var i = this._handleCover();
					i || this.j_bubble.show()
				}
			},
			showByTime: function(e, i) {
				var t = this;
				"delayShow" == e ? setTimeout(function() {
					t.j_bubble.show()
				}, i) : "delayClose" == e ? (t.j_bubble.show(), setTimeout(function() {
					t.closeBubble()
				}, i)) : t.j_bubble.show()
			},
			_getBubbleInfo: function(e) {
				var i = this,
					t = i.j_bubble,
					b = t.width();
				t.width(0), t.show();
				var s = t.offset(),
					n = s.top,
					o = s.left,
					l = t.find(".j_body").height() + 12;
				t.hide(), t.width(b), i.minL = o, i.maxL = o + b + 7, i.minT = n, i.maxT = n + l, e && (i.bubbleType = "inter"), this.bubbles[i.cid] = i
			},
			_isCover: function() {
				var e = this,
					i = e.cid,
					t = this.bubbles,
					b = e;
				for(var s in t)
					if(s == i || "inter" == e.bubbleType || "none" == t[s].j_bubble.get(0).style.display);
					else {
						var n = t[s];
						if(b.minL < n.maxL && b.maxL > n.minL && b.minT < n.maxT && b.maxT > n.minT) return n
					}
				return !1
			},
			_handleCover: function() {
				var e = this._isCover(),
					i = this;
				if(e) {
					var t = e._option.level,
						b = i._option.level;
					return b > t ? (e.j_bubble.fadeOut("slow"), !1) : !0
				}
				return !1
			},
			setBubblePosition: function(e) {
				e && (e.top || e.left) && this.j_bubble.css(e)
			},
			setBubbleFixed: function() {
				$.browser.msie && "6.0" == $.browser.version ? this.j_bubble.addClass("ui_bubble_fixed_hack") : this.j_bubble.addClass("ui_bubble_wrap_fixed")
			},
			setBubbleNormal: function() {
				$.browser.msie && "6.0" == $.browser.version ? this.j_bubble.removeClass("ui_bubble_fixed_hack") : this.j_bubble.removeClass("ui_bubble_wrap_fixed")
			},
			setFixedForMessage: function() {
				var e, i = this,
					t = null;
				e && clearTimeout(e), $(window).bind("scroll", function() {
					e && clearTimeout(e), null == t && (t = {
						top: parseInt(i.j_bubble.css("top")) || i.j_bubble.position().top
					}), e = setTimeout(function() {
						i._bubleFixedSet(t)
					}, 10)
				})
			},
			setContent: function(e) {
				this.j_bubble.find(".j_body").html(e)
			},
			_bubleFixedSet: function(e) {
				{
					var i = this,
						t = $(window).scrollTop();
					this._option
				}
				t > e.top ? (i.setBubbleFixed(), $.browser.msie && "6.0" == $.browser.version || i.j_bubble.css({
					top: -5
				}), i.j_bubble.find(".ui_triangle").hide()) : (i.setBubbleNormal(), i.j_bubble.css({
					top: e.top
				}), i.j_bubble.find(".ui_triangle").show())
			}
		}
	})
}();
_.Module.define({
	path: "poster/widget/rich_poster",
	requires: ["tbui/widget/bubble_tip", "tbui/widget/login_dialog", "bawu/widget/complaint_bar_owner", "poster/widget/post_manager", "tbui/widget/placeholder", "tbui/widget/word_limit", "poster/widget/post_prefix", "poster/widget/topic_suggestion", "poster/widget/post_service", "poster/widget/share_thread", "poster/widget/mouse_pwd", "poster/widget/post_signature", "encourage-payment/widget/pay_member"
	],
	sub: {
		_options: {},
		_windowScrollTimer: "",
		_windowHeight: 0,
		_payMemberTpl: '<a href="javascript:;" class="j-placeholder-pay-member" style="color:#999; text-decoration:none;margin-left: 80px;margin-top:12px;display:block;">\u5f00\u901a\u8d85\u7ea7\u4f1a\u5458\u53d1\u8d346\u500d\u7ecf\u9a8c</a>',
		_olympicTpl: '<a href="javascript:;" class="j-placeholder-olympic" style="color:#999; text-decoration:none;font-size:14px;display:block;">\u4e00\u697c\u732e\u7ed9\u56fd\u5bb6</a>',
		isOlympic: function() {
			var t = (new Date).setHours(0, 0, 0, 0),
				e = new Date("2016/8/6").setHours(0, 0, 0, 0);
			return t === e
		},
		initial: function(t) {
			this.initData(t), this.bindInitEvent()
		},
		initData: function(t) {
			this._options = t, this._windowHeight = screen.height
		},
		bindInitEvent: function() {
			this.bindTabChange(), this.bindWannaPost(), this.bindTousuEvent(), this.bindScrollEvent()
		},
		initBubbleTips: function() {
			try {
				!localStorage.getItem("postShareForFRS") && this.initShareTips(), !localStorage.getItem("postFullscreenForFRS") && this.initFullScreen()
			} catch(t) {}
		},
		initShareTips: function() {
			var t = {
					arrow_dir: "down",
					bubble_css: {
						top: -45,
						left: 0,
						width: 200,
						height: 50,
						zIndex: 6e4
					},
					arrow_pos: {},
					wrap: $(".j_poster_share"),
					closeBtn: !0,
					content: "\u52fe\u9009\u6b64\u5904\uff0c\u53d1\u8868\u540e\u9a6c\u4e0a\u5206\u4eab\u672c\u8d34~"
				},
				e = this;
			this.$root.find("#ueditor_replace").one("click", function() {
				self._shareBubble = e.requireInstance("tbui/widget/bubble_tip", [t]), self._shareBubble.showBubble(), localStorage.setItem("postShareForFRS", 1), e.addShareTipsEvents()
			})
		},
		initFullScreen: function() {
			var t = {
				arrow_dir: "up",
				bubble_css: {
					top: 30,
					right: -10,
					width: 150,
					height: 50,
					zIndex: 6e4
				},
				arrow_pos: {
					right: 10
				},
				wrap: $(".edui-btn-toolbar"),
				closeBtn: !0,
				content: "\u5168\u5c4f\u53d1\u8d34\u4f53\u9a8c\u4f1a\u66f4\u597d\u54e6~"
			};
			self._fullscreenBubble = this.requireInstance("tbui/widget/bubble_tip", [t]), self._fullscreenBubble.showBubble(), localStorage.setItem("postFullscreenForFRS", 1), this.bindFullScreenEvent()
		},
		bindFullScreenEvent: function() {
			$editorContainer = this.$root.find(".ueditor_container"), $editorContainer.on("onSetFullScreen", function() {
				self._fullscreenBubble && self._fullscreenBubble.closeBubble()
			})
		},
		addShareTipsEvents: function() {
			$(".j_use_share").on("change", function() {
				self._shareBubble && self._shareBubble.closeBubble()
			})
		},
		isInitPage: 0,
		bindTabChange: function() {
			var t = this,
				e = this._options.pagelet;
			this.isInitPage = "frs" === this._options.initPage || "category" === this._options.initPage, e && e.on("tab_change", function(e) {
				var i = e.tab || "frs";
				t.isInitPage = "frs" === i || "category" === i
			})
		},
		bindWannaPost: function() {
			var t = this;
			this.observe("wanna_post", function() {
				PosterContext.getAuthorities().float_editor ? t.enableFloatingPoster() : $(window).scrollTop($("body").height()), setTimeout(function() {
					t.focus()
				}, 300)
			})
		},
		bindTousuEvent: function() {
			var t = this;
			$("#frs_footer_tieba_report").on("click", function(e) {
				if(PageData.user.is_login) {
					var i = t.requireInstance("bawu/widget/complaint_bar_owner");
					i.showDialog()
				} else e.preventDefault(), t.requireInstance("tbui/widget/login_dialog")
			})
		},
		bindScrollEvent: function() {
			var t = this;
			$("body").height() <= 2 * t._windowHeight && this.isInitPage ? t.init() : $(window).bind("scroll", [t], t.scrollHandler)
		},
		unbindScrollEvent: function() {
			var t = this;
			$(window).unbind("scroll", t.scrollHandler)
		},
		scrollHandler: function(t) {
			var e = t.data[0];
			e._windowScrollTimer && clearTimeout(e._windowScrollTimer), e._windowScrollTimer = setTimeout(function() {
				$(window).scrollTop() + 2 * e._windowHeight >= $("body").height() && e.isInitPage && (e.init(), e.unbindScrollEvent())
			}, 200)
		},
		init: function() {
			var t = $("#tb_rich_poster_container"),
				e = this._options;
			this.$container = t, this.$root = t.find("#rich_ueditor_tpl"), this.$window = $(window), this.$editorContainer = this.$root.find(".ueditor_container"), this.prefix = e.prefix, this.hotTopic = e.hotTopic ? "#" + e.hotTopic + "#" : e.hotTopic, this.feedback = e.feedback, this.isFrs = "frs" === PosterContext.getContext().product, this.isPb = "pb" === PosterContext.getContext().product, this.isQinglang = e.isQinglang, this.QinglangData = e.QinglangData, this.redirectAfterPost = e.redirectAfterPost || !1, this.hideHolder = 0, this.user = $.extend({
				memberLevel: 0
			}, e.user), this.postManager = this.requireInstance("poster/widget/post_manager"), this.isFrs && (this.$title = this.$root.find(".j_title"), this.initTitle()), this.initPostService(), this.initDraft(), this.initEditor(), this.initEditorReady(), this.initAntiSpamming(), this.initEvent(), this.initPlaceHolder(), PosterContext.getAuthorities().long_editor && this.initFloatingToolbar(), this.initMousePwd(), this.initSignature(), this.initOther()
		},
		initOther: function() {
			if(PosterContext.context.user.isLogin && !PosterContext.isPostAllowed()) $.browser.msie && 6 == $.browser.version || this.editor.ready(function() {
				this.disable()
			}), this.showWarning(PosterContext.getPostRejectedMessage()), this.toggleSubmitButton(!0), this.$title && this.$title.tbprop("disabled", !0);
			else {
				if(this.isFrs) {
					var t = "";
					if(this.QinglangData && this.QinglangData.title) t = this.QinglangData.title;
					else {
						var e = this.user.memberLevel ? "\u4eb2\u7231\u7684\u4f1a\u5458\uff0c\u8bf7\u8f93\u5165\u60a8\u7684\u6807\u9898" : "\u8bf7\u586b\u5199\u6807\u9898";
						t = e
					}
					this.requireInstance("tbui/widget/placeholder", [this.$title, t, {
						color: "#bfbfbf"
					}])
				}
				this.editor.ready(function() {
					this.restoreDraft()
				})
			}
			this.initBubbleTips()
		},
		initTitle: function() {
			this.initTitleWordLimit(), this.initTitlePrefix(), this.initTitleTopic(), this.hotTopic && this.$title.val(this.hotTopic)
		},
		initTitleWordLimit: function() {
			var t = this,
				e = $("#tb_rich_poster"),
				i = {
					inputObj: this.$title,
					checkDelay: 200,
					showLimit: 10,
					maxNum: 60,
					isLimitInput: !0
				},
				o = this.requireInstance("tbui/widget/word_limit", i);
			o.init(), o.bind("wlshowing", function() {
				$("html").hasClass("tb-ueditor-fullscreen") || (e.find(".j_surveillance").hide(), t.$root.hasClass("tb_floating_poster") && o.holder.css("zIndex", 1e4))
			}), o.bind("wlhiding", function() {
				$("html").hasClass("tb-ueditor-fullscreen") || (e.find(".j_surveillance").show(), o.holder.css("zIndex", "auto"))
			})
		},
		initTitlePrefix: function() {
			var t = {
				$target: this.$title,
				prefix: this.prefix,
				hotTopic: this.hotTopic
			};
			this.requireInstance("poster/widget/post_prefix", t)
		},
		initTitleTopic: function(t) {
			t || this.requireInstance("poster/widget/topic_suggestion", {
				$input: this.$root.find(".j_topic_sug_input"),
				$btn: this.$root.find(".j_topic_add_btn")
			})
		},
		initPostService: function() {
			{
				var t = this;
				!(!window.history || !window.history.pushState)
			}
			this.postService = this.requireInstance("poster/widget/post_service", [t._options.blockInfo]), this.postService.success(function(e, i) {
				$.stats.track("frs\u53d1\u8868\u6309\u94ae\u70b9\u51fb\u91cf", "\u65b0\u53d1\u8d34\u4f18\u5316\u7edf\u8ba1", "frs", "click"), t.editor.setContent(""), t.editor.clearDraft(), t.showPostSuccess(), t.initTitle(), t.postManager.firePostSuccess({
					context: PosterContext,
					response: i
				});
				var o = Math.ceil(10 * Math.random());
				o > 8 && ($.stats.track("pb-list\u6700\u4e0b_F90", "PC\u7aef\u5f69\u7968pb\u53d1\u5e16\u8bd5\u9a8c", "pb", "view", {
					obj_url: "//tb1.bdstatic.com/tb/cms/com/icon/F90_icon.gif"
				}), $.tb.Storage.set("pb_show_ad_f90", "Y", (new Date).getTime() + 8e3)), setTimeout(function() {
					t.redirectAfterPost ? $.tb.location.setHref(t.redirectAfterPost) : t.successHandler()
				}, 1e3), setTimeout(function() {
					$(".tb_poster_info").remove(), t.togglePostState(!1);
					var e = $(window).scrollTop();
					e > 0 && (window.scrollTo(0, 1), setTimeout(function() {
						window.scrollTo(0, 0)
					}, 0))
				}, 2e3);
				var s = i.data.is_thread_visible || 0;
				s || setTimeout(function() {
					t.editor.execCommand("clearfullscreen");
					var e = $(".j_submit").data("fullscreen") || "\u9ed8\u8ba4";
					if($(".j_use_share").is(":checked")) {
						$.stats.track("\u53d1\u5e16\u6210\u529f-\u9009\u4e2d\u5206\u4eab-" + e, "\u65b0\u53d1\u8d34\u4f18\u5316\u7edf\u8ba1", "frs", "view");
						var o = i.data,
							s = i.postData.title + "_" + o.fname + "\u5427_\u767e\u5ea6\u8d34\u5427#\u4e0a\u8d34\u5427\uff0c\u627e\u7ec4\u7ec7~#";
						t.shareThread = t.requireInstance("poster/widget/share_thread"), t.shareThread.setShareContent({
							desc: s,
							text: s,
							url: $.tb.location.getOrigin() + "/p/" + o.tid + "?ie=utf-8"
						})
					} else $.stats.track("\u53d1\u5e16\u6210\u529f-\u672a\u9009\u4e2d\u5206\u4eab" + e, "\u65b0\u53d1\u8d34\u4f18\u5316\u7edf\u8ba1", "frs", "view")
				}, 1e3)
			}).complete(function() {
				t.togglePostState(!1)
			})
		},
		initDraft: function() {
			var t = this,
				e = this.$root.find(".j_draft"),
				i = e.children(".j_content"),
				o = e.children(".j_clear");
			this.$root.on("saved.draft", function() {
				i.text("\u4f60\u6b63\u5728\u8f93\u5165\u7684\u5185\u5bb9\u5df2\u81ea\u52a8\u4fdd\u5b58, " + $.dateFormat(new Date, "HH:mm:ss")), e.show()
			}), this.$root.on("restored.draft", function() {
				i.text("\u4f60\u4e0a\u6b21\u672a\u53d1\u8868\u7684\u5185\u5bb9\u5df2\u81ea\u52a8\u6062\u590d"), e.show()
			}), o.on("click", function() {
				t.editor.clearDraft(), t.editor.setContent(""), e.hide(), t.trigger("draft_clean")
			})
		},
		initEditor: function() {
			var t = 2 === this.user.memberLevel;
			if(t && (this.hideHolder = 1), PosterContext.isPostAllowed()) {
				var e = {};
				e.excludePlugins = [], e.contentWidth = 708, e.initialFrameWidth = 720, PosterContext.getAuthorities().long_editor && (e.autoFloatEnabled = !0, e.topOffset = this.isFrs ? 40 : 0, e.heightLimit = !1), this.editor = UE.getEditor("ueditor_replace", e)
			} else this.editor = UE.getEditor("ueditor_replace", {
				toolbar: "",
				contentWidth: 708,
				initialFrameWidth: 720
			});
			window.test_editor = this.editor, window.test_poster = this
		},
		initEditorReady: function() {
			var t = this;
			this.editor.ready(function() {
				t.postManager.fireEditorReady({
					editor: t.editor,
					context: PosterContext,
					poster: t
				})
			})
		},
		initAntiSpamming: function() {},
		initEvent: function() {
			var t = this;
			this.$submit = this.$root.find(".j_submit").click(function(e) {
				e.preventDefault(), t.$submit.is(".btn_disable") || t.post()
			}), this.$root.on("keyup", function(e) {
				e.ctrlKey && 13 == e.keyCode && t.post()
			}), this.$root.find(".add_vote_btn").click(function() {
				if(!PosterContext.getContext().user.canVote) {
					var t = PosterContext.getContext().forum.nameEncoded;
					return $.tb.alert({
						title: "\u53d1\u8d77\u6295\u7968",
						message: '\u83b7\u5f97<a target="_blank" href="/f/like/level?ie=utf8&kw=' + t + '">3\u7ea7\u5934\u8854</a>\u624d\u53ef\u53d1\u8d77\u6295\u7968\u54e6~~<br />\u7533\u8bf7\u52a0\u5165\u4f1a\u5458\uff0c\u9a6c\u4e0a\u53d1\u8d77\u6295\u7968\uff01\uff08\u66f4\u591a\u4f1a\u5458\u7279\u6743<a target="_blank" href="/f/like/level?ie=utf8&kw=' + t + '">\u70b9\u6b64\u67e5\u770b</a>\uff09',
						buttons: {
							text: "\u786e\u5b9a"
						}
					}), !1
				}
			}), this.$root.find(".j_disable_float").click(function() {
				t.disableFloatingPoster()
			}), this.observe("insertimage", function(e, i) {
				t.editor.execCommand("insertimage", [i])
			}), this.observe("file_added.attachment", function() {
				t.togglePostState(!0)
			}), this.observe("upload_complete.attachment", function() {
				t.togglePostState(!1)
			})
		},
		initPlaceHolder: function() {
			var t = this,
				e = 0;
			if(this.$placeholder = $('<div class="tb_poster_placeholder"></div>'), this.$placeholder.click(function(e) {
					$(e.target).is("a") || (t.$placeholder.hide(), t.editor.focus())
				}), this.editor.ready(function() {
					t.$placeholder.prependTo(t.$root.find(".edui-container")), t.editor.addListener("focus", function() {
						t.$placeholder.hide(), t.isOlympic() && this.setContent("\u4e00\u697c\u732e\u7ed9\u56fd\u5bb6")
					}), t.editor.addListener("blur", function() {
						e || t.showPlaceHolder()
					}), t.showPlaceHolder()
				}), this.$root.on("restored.draft", function() {
					t.$placeholder.hide()
				}), this.isOlympic()) this.$placeholder.css({
				left: "11px",
				top: "52px"
			}), this.$placeholder.html(this._olympicTpl);
			else if(this.QinglangData && this.QinglangData.content && PageData.user.is_login) {
				this.$placeholder.css({
					left: 15,
					top: 55
				});
				var i = '<p style="width:565px;line-height:25px;">' + this.QinglangData.content + "</p>";
				this.$placeholder.html(i)
			} else this.$placeholder.html(this._payMemberTpl), this.bindSuperMemberExpUpTrack();
			this.$editorContainer.on("setbackground", function(i, o) {
				return "default" !== o && o ? (t.hideHolder = 1, t.$placeholder.hide(), void 0) : (e || t.showPlaceHolder(), void 0)
			}), this.$placeholder.find("a").on("click", function() {
				var t = "";
				"frs" == PageData.product ? t = "frs" : "pb" == PageData.product && (t = "pb"), $.stats.track("\u53d1\u8868\u56de\u590d\u6846PlaceHolder", "\u8d34\u5427PC\u9875\u9762\u4f18\u5316", t, "click")
			}), PosterContext.getContext().user.isLogin && "\u8d34\u5427\u610f\u89c1\u53cd\u9988" == PosterContext.getContext().forum.name && this.$placeholder.addClass("tb_poster_plain_placeholder").html(this.feedback)
		},
		initMousePwd: function() {
			this.MousePwd = this.requireInstance("poster/widget/mouse_pwd"), this.MousePwd.start(["editor_content_wrapper"])
		},
		initFloatingToolbar: function() {
			function t() {
				s.removeClass("poster_floating_toolbar").removeClass("poster_locked_toolbar"), i = !1
			}
			var e = this,
				i = !1,
				o = this.$root.find(".editor_bottom_panel"),
				s = this.$root.find(".j_floating");
			if(this.$window.scroll(function() {
					if(e.editor.$container.height() > e.$window.height()) {
						var n = e._viewPortOn(e.$root);
						if(n.isOnScreen) {
							var r = e._viewPortOn(o);
							r.bottomToBottom >= 0 ? i && t() : n.topToBottom > 400 ? (s.addClass("poster_floating_toolbar").removeClass("poster_locked_toolbar"), i = !0) : (s.addClass("poster_locked_toolbar").removeClass("poster_floating_toolbar"), i = !0)
						} else i && t()
					} else i && t()
				}), this.bind("draft_clean", t), this.bind("poster_float", t), "1" != $.tb.Storage.get("close_long_editor_bubble")) {
				var n = {
						content: "\u5df2\u4e3a\u4f60\u5f00\u542f\u8d85\u957f\u53d1\u8d34\u6846\u529f\u80fd\uff0c\u4e86\u89e3\u66f4\u591a\u6216\u5173\u95ed\u6b64\u529f\u80fd<a href='//tieba.baidu.com/mo/q/topic_page/219_1' target='_blank'>\u70b9\u51fb\u8fd9\u91cc</a>",
						arrow_dir: "down",
						bubble_css: {
							top: 80,
							left: 100,
							width: 179
						},
						wrap: this.$root.find(".j_bubble_container"),
						closeBtn: !0
					},
					r = new UiBubbleTipBase(n);
				r.bind("onclose", function() {
					$.tb.Storage.set("close_long_editor_bubble", "1", (new Date).getTime() + 2592e6), r.closeBubble()
				}), r.showBubble()
			}
		},
		initSignature: function() {
			var t = this,
				e = this.$root.find(".j_poster_signature");
			e.hide(), PosterContext.getContext().user.isLogin && this.$root.find("#ueditor_replace").one("click", function() {
				var i = t.requireInstance("poster/widget/post_signature", {
					$container: e
				});
				i.init(), e.show().css("display", "inline-block")
			})
		},
		showPlaceHolder: function() {
			var t = this.editor.getContent();
			0 != t.length || this.hideHolder || this.$placeholder.show()
		},
		showPostSuccess: function() {
			var t = "";
			this.user.memberLevel && (t = "\u5c0a\u656c\u7684\u4f1a\u5458\uff0c");
			var e = this.getPosterSuccessContent(t);
			$(e).appendTo(this.$editorContainer), this.showAddExp($(".poster_submit"))
		},
		showAddExp: function() {
			$(".post_success_exp").fadeIn()
		},
		bindSuperMemberExpUpTrack: function() {
			var t = $(".j-placeholder-pay-member");
			if(-1 != t.html().indexOf("\u5f00\u901a\u8d85\u7ea7\u4f1a\u5458\u53d1\u8d346\u500d\u7ecf\u9a8c")) {
				var e = this;
				e.$placeholder.on("click", "a", function() {
					if(!PageData.user.is_login) return e.requireInstance("tbui/widget/login_dialog"), !1;
					var t = e.requireInstance("encourage-payment/widget/pay_member"),
						i = {
							fr: "\u53d1\u5e16\u6846\u5f00\u901a\u4f1a\u5458\u70b9\u51fb\u91cf",
							scene_id: 1007001003
						};
					t.showCashier(i), $.stats.track("\u53d1\u5e16\u6846\u5f00\u901a\u4f1a\u5458\u70b9\u51fb\u91cf", "\u4f1a\u5458\u52a0\u901f2.0")
				})
			}
		},
		getPosterSuccessContent: function(t) {
			var e = ['<div class="tb_poster_info poster_success">', '<div class="poster_success_content clearfix #{className}">', '<div class="post_success_tip">#{headCrown}\u53d1\u8868\u6210\u529f\uff01</div>', '<div class="post_success_exp">', '<span class="post_success_exp_name">\u7ecf\u9a8c</span>', '<b class="post_success_exp_plus">+#{experience}</b>', "</div>", "</div>", "#{footTip}", "</div>"].join(""),
				i = 2 == this.user.memberLevel,
				o = {
					className: t ? "poster_success_content_mem" : ""
				},
				s = {
					experience: 6,
					footTip: "",
					headCrown: '<i class="middle_size_crown"></i>'
				},
				n = {
					experience: 1,
					footTip: '<div class="success-foot-tip"><i class="middle_size_crown"></i>\u5f00\u901a\u8d85\u7ea7\u4f1a\u5458\u53d1\u8d346\u500d\u7ecf\u9a8c</div>',
					headCrown: ""
				};
			if(i) var r = $.extend(o, s);
			else var r = $.extend(o, n);
			var a = $.tb.format(e, r);
			return a
		},
		togglePostState: function(t) {
			var e = this.$root.find(".j_posting_status");
			e.toggleClass("poster_posting_status_loading", t), this.toggleSubmitButton(t)
		},
		toggleSubmitButton: function(t) {
			this.$submit.toggleClass("btn_default", !t), this.$submit.toggleClass("btn_disable", t)
		},
		post: function(t) {
			var e = this.getPostData();
			e.nick_name = this.user.user_nickname;
			var i = this.validateContent();
			"object" == typeof postObj && "object" == typeof t && $.extend(e, t), !this.postService.isPosting() && i && (PosterContext.context.user.isLogin ? ($.cookie("GET_TOPIC", "-", {
				expires: -1,
				path: "/"
			}), this.postService.post(this.getPostType(), e, PosterContext.getContext()), this.togglePostState(!0)) : this.requireInstance("tbui/widget/login_dialog", ["", "editor", function() {
				$.stats.track("\u53d1\u8868\u6309\u94ae_\u767b\u5f55\u6210\u529f", "\u975e\u767b\u5f55\u7528\u6237\u53d1\u5e16"), $.tb.location.reload()
			}]))
		},
		getTitle: function() {
			return this.$title ? this.$title.val() : ""
		},
		getContent: function() {
			return this.editor.getContent()
		},
		getContentUbb: function() {
			return this.editor.getContentUbb()
		},
		getPostType: function() {
			var t = this.isFrs ? "thread" : "reply";
			return this.editor.getExtendContent().hasLocalVideo && (t = "thread" == t ? "vpostThread" : "vpostReply"), t
		},
		showWarning: function(t) {
			t && void 0 == this.$warning && (this.$warning = $('<div class="tb_poster_info poster_warning"></div>').appendTo(this.$editorContainer)), this.$warning.html(t)
		},
		getPostData: function() {
			var t = this.editor.getExtendContent(),
				e = {
					content: this.getContentUbb()
				};
			if(this.isFrs) {
				var i = this.getTitle(),
					o = this.$title.data("prefix"); - 1 == i.indexOf(o) && (o = ""), i = i.replace(/\u2006/g, ""), i = i.replace(o, ""), e.title = i, e.prefix = o
			}
			var s = this.postManager.firePostDataProcess({
				editorExtendContent: t,
				context: PosterContext
			}, e);
			e = $.extend({}, e, s);
			var n = this.$root.find(".j_sign_id"),
				r = this.$root.find(".j_use_signature");
			return r.tbattr("checked") && n.size() > 0 && n.val() && (e.sign_id = n.val()), this.$root.find(".j_poster_to_profile_in_frs").tbattr("checked") && (e.is_personal_thread = 1), e.mouse_pwd = this.MousePwd.report().c, e.mouse_pwd_t = this.MousePwd.time, e.mouse_pwd_isclick = this.MousePwd.MOUSEPWD_CLICK, e
		},
		validateContent: function() {
			var t = this.isFrs ? 3e4 : 1e4,
				e = this.editor.getContentByteLength(),
				i = this.editor.getExtendContent(),
				o = this.$root.find(".ueditor_container .j_error"),
				s = "",
				n = this;
			if(this.isFrs) {
				{
					var r = $.trim(this.getTitle());
					this.$title.data("prefix")
				}
				if(0 === r.length) return this.$root.find(".title_container .j_error").text("\u6807\u9898\u4e0d\u80fd\u4e3a\u7a7a").show(), this.$title.focus(), this.$window.scrollTop(this.$title.offset().top - 60), !1;
				if("" == $.trim(r.replace(/#([^#]+)#/g, ""))) return this.$root.find(".title_container .j_error").text("\u53ea\u6709#\u8bdd\u9898#\u662f\u4e0d\u884c\u7684\u54df~\u8bf7\u5728\u8bdd\u9898\u540e\u586b\u5199\u6b63\u5f0f\u6807\u9898\uff01").show(), this.$title.focus(), this.$window.scrollTop(this.$title.offset().top - 60), !1
			}
			return 0 !== e || this.isFrs ? e > t ? (s = "\u62b1\u6b49\uff0c\u60a8\u7684\u8d34\u5b50\u8d85\u8fc7" + t / 2 + "\u5b57\uff0c\u5efa\u8bae\u60a8\u7cbe\u7b80\u6216\u5206\u6bb5\u540e\u518d\u63d0\u4ea4", o.text(s).show(), !1) : (s = this.postManager.firePostValidate({
				context: PosterContext,
				editorExtendContent: i,
				poster: n
			}), "string" == typeof s && "NOT_SHOW_WARNING" === s ? !1 : "string" == typeof s && s.length ? (o.text(s).show(), !1) : (this.$root.find(".j_error").hide(), !0)) : (o.text("\u56de\u590d\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a").show(), !1)
		},
		refresh: function() {
			var t = $.tb.location.getHref();
			t = t.replace(/#\w*$/, ""), $.tb.location.setHref(t)
		},
		successHandler: function() {
			this.initTitle(!0), Bigpipe.broadcast("postSuccess", {})
		},
		focus: function() {
			this.isFrs ? this.$title.focus() : $.browser.msie && $.browser.version <= 7 || this.editor.focus()
		},
		enableFloatingPoster: function() {
			var t = this;
			if(!this.$root.hasClass("tb_floating_poster") && (this.editor.enableHeightLimit(this.$window.height() - 450), this.trigger("poster_float"), this.$root.hide().addClass("tb_floating_poster"), this.position && this.$root.css(this.position), this.$root.fadeIn(function() {
					t.$root.draggable({
						handle: t.$root.find(".poster_head"),
						start: function() {
							t.$root.css({
								right: "auto",
								bottom: "auto"
							})
						}
					})
				}), "1" != $.tb.Storage.get("close_float_draggable_bubble"))) {
				var e = {
						content: "\u6d6e\u52a8\u53d1\u8d34\u6846\u53ef\u4ee5<span class='ui_text_emphasize'>\u62d6\u62fd</span>\u4e86\uff0c\u8d76\u5feb\u62d6\u52a8\u6807\u9898\u8bd5\u8bd5\uff01\u66f4\u591a\u8be6\u60c5<a href='//tieba.baidu.com/mo/q/topic_page/219_1' target='_blank'>\u70b9\u51fb\u8fd9\u91cc</a>",
						arrow_dir: "down",
						bubble_css: {
							top: 0,
							left: 10,
							width: 179
						},
						wrap: this.$root.find(".j_bubble_container"),
						closeBtn: !0
					},
					i = new UiBubbleTipBase(e);
				i.bind("onclose", function() {
					$.tb.Storage.set("close_float_draggable_bubble", "1", (new Date).getTime() + 2592e6), i.closeBubble()
				}), i.showBubble()
			}
		},
		disableFloatingPoster: function() {
			var t = this;
			t.$root.fadeOut(function() {
				t.position = {
					left: t.$root.css("left"),
					top: t.$root.css("top")
				}, t.$root.draggable("destroy").css({
					left: "auto",
					top: "auto"
				}), t.$root.removeClass("tb_floating_poster").show(), PosterContext.getAuthorities().long_editor ? t.editor.disableHeightLimit() : t.editor.enableHeightLimit()
			})
		},
		_viewPortOn: function(t) {
			var e = this.$window.scrollTop(),
				i = e + this.$window.height(),
				o = t.offset().top,
				s = o + t.height();
			return {
				isOnScreen: i > o && s > e,
				topToBottom: i - o,
				bottomToTop: s - e,
				topToTop: o - e,
				bottomToBottom: i - s
			}
		}
	}
});
_.Module.define({
	path: "ueditor/widget/ueditor_base",
	sub: {
		initial: function() {
			window.UE || (this.initUEditor(), this.initUEditorConfig(), this.initUEditorLang(), this.initExtendUtils())
		},
		initUEditor: function() {
			! function() {
				function e(e, t, n) {
					var r;
					return t = t.toLowerCase(), (r = e.__allListeners || n && (e.__allListeners = {})) && (r[t] || n && (r[t] = []))
				}
				UEDITOR_CONFIG = window.UEDITOR_CONFIG || {}, window.UE = {
					plugins: {},
					commands: {},
					instants: {},
					I18N: {},
					version: "mini1.0.0.0"
				};
				var t = UE.dom = {},
					n = UE.browser = function() {
						var e = navigator.userAgent.toLowerCase(),
							t = window.opera,
							n = {
								ie: !!window.ActiveXObject,
								opera: !!t && t.version,
								webkit: e.indexOf(" applewebkit/") > -1,
								mac: e.indexOf("macintosh") > -1,
								quirks: "BackCompat" == document.compatMode
							};
						n.gecko = "Gecko" == navigator.product && !n.webkit && !n.opera;
						var r = 0;
						if(n.ie && (r = parseFloat(e.match(/msie (\d+)/)[1]), n.ie9Compat = 9 == document.documentMode, n.ie8 = !!document.documentMode, n.ie8Compat = 8 == document.documentMode, n.ie7Compat = 7 == r && !document.documentMode || 7 == document.documentMode, n.ie6Compat = 7 > r || n.quirks, n.ie9above = r > 8, n.ie9below = 9 > r), n.gecko) {
							var i = e.match(/rv:([\d\.]+)/);
							i && (i = i[1].split("."), r = 1e4 * i[0] + 100 * (i[1] || 0) + 1 * (i[2] || 0))
						}
						return /chrome\/(\d+\.\d)/i.test(e) && (n.chrome = +RegExp.$1), /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(e) && !/chrome/i.test(e) && (n.safari = +(RegExp.$1 || RegExp.$2)), n.opera && (r = parseFloat(t.version())), n.webkit && (r = parseFloat(e.match(/ applewebkit\/(\d+)/)[1])), n.version = r, n.isCompatible = !n.mobile && (n.ie && r >= 6 || n.gecko && r >= 10801 || n.opera && r >= 9.5 || n.air && r >= 1 || n.webkit && r >= 522 || !1), n
					}(),
					r = n.ie,
					i = (n.webkit, n.gecko, n.opera, UE.utils = {
						each: function(e, t, n) {
							if(null != e)
								if(e.length === +e.length) {
									for(var r = 0, i = e.length; i > r; r++)
										if(t.call(n, e[r], r, e) === !1) return !1
								} else
									for(var o in e)
										if(e.hasOwnProperty(o) && t.call(n, e[o], o, e) === !1) return !1
						},
						makeInstance: function(e) {
							var t = new Function;
							return t.prototype = e, e = new t, t.prototype = null, e
						},
						extend: function(e, t, n) {
							if(t)
								for(var r in t) n && e.hasOwnProperty(r) || (e[r] = t[r]);
							return e
						},
						extend2: function(e) {
							for(var t = arguments, n = 1; n < t.length; n++) {
								var r = t[n];
								for(var i in r) e.hasOwnProperty(i) || (e[i] = r[i])
							}
							return e
						},
						inherits: function(e, t) {
							var n = e.prototype,
								r = i.makeInstance(t.prototype);
							return i.extend(r, n, !0), e.prototype = r, r.constructor = e
						},
						bind: function(e, t) {
							return function() {
								return e.apply(t, arguments)
							}
						},
						defer: function(e, t, n) {
							var r;
							return function() {
								n && clearTimeout(r), r = setTimeout(e, t)
							}
						},
						indexOf: function(e, t, n) {
							var r = -1;
							return n = this.isNumber(n) ? n : 0, this.each(e, function(e, i) {
								return i >= n && e === t ? (r = i, !1) : void 0
							}), r
						},
						removeItem: function(e, t) {
							for(var n = 0, r = e.length; r > n; n++) e[n] === t && (e.splice(n, 1), n--)
						},
						trim: function(e) {
							return e.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, "")
						},
						listToMap: function(e) {
							if(!e) return {};
							e = i.isArray(e) ? e : e.split(",");
							for(var t, n = 0, r = {}; t = e[n++];) r[t.toUpperCase()] = r[t] = 1;
							return r
						},
						unhtml: function(e, t) {
							return e ? e.replace(t || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g, function(e, t) {
								return t ? e : {
									"<": "&lt;",
									"&": "&amp;",
									'"': "&quot;",
									">": "&gt;",
									"'": "&#39;"
								}[e]
							}) : ""
						},
						html: function(e) {
							return e ? e.replace(/&((g|l|quo)t|amp|#39);/g, function(e) {
								return {
									"&lt;": "<",
									"&amp;": "&",
									"&quot;": '"',
									"&gt;": ">",
									"&#39;": "'"
								}[e]
							}) : ""
						},
						cssStyleToDomStyle: function() {
							var e = document.createElement("div").style,
								t = {
									"float": void 0 != e.cssFloat ? "cssFloat" : void 0 != e.styleFloat ? "styleFloat" : "float"
								};
							return function(e) {
								return t[e] || (t[e] = e.toLowerCase().replace(/-./g, function(e) {
									return e.charAt(1).toUpperCase()
								}))
							}
						}(),
						loadFile: function() {
							function e(e, n) {
								try {
									for(var r, i = 0; r = t[i++];)
										if(r.doc === e && r.url == (n.src || n.href)) return r
								} catch(o) {
									return null
								}
							}
							var t = [];
							return function(n, r, i) {
								var o = e(n, r);
								if(o) return o.ready ? i && i() : o.funs.push(i), void 0;
								if(t.push({
										doc: n,
										url: r.src || r.href,
										funs: [i]
									}), !n.body) {
									var a = [];
									for(var s in r) "tag" != s && a.push(s + '="' + r[s] + '"');
									return n.write("<" + r.tag + " " + a.join(" ") + " ></" + r.tag + ">"), void 0
								}
								if(!r.id || !n.getElementById(r.id)) {
									var l = n.createElement(r.tag);
									delete r.tag;
									for(var s in r) l.setAttribute(s, r[s]);
									l.onload = l.onreadystatechange = function() {
										if(!this.readyState || /loaded|complete/.test(this.readyState)) {
											if(o = e(n, r), o.funs.length > 0) {
												o.ready = 1;
												for(var t; t = o.funs.pop();) t()
											}
											l.onload = l.onreadystatechange = null
										}
									}, l.onerror = function() {
										throw Error("The load " + (r.href || r.src) + " fails,check the url settings of file ueditor.config.js ")
									}, n.getElementsByTagName("head")[0].appendChild(l)
								}
							}
						}(),
						isEmptyObject: function(e) {
							if(null == e) return !0;
							if(this.isArray(e) || this.isString(e)) return 0 === e.length;
							for(var t in e)
								if(e.hasOwnProperty(t)) return !1;
							return !0
						},
						fixColor: function(e, t) {
							if(/color/i.test(e) && /rgba?/.test(t)) {
								var n = t.split(",");
								if(n.length > 3) return "";
								t = "#";
								for(var r, i = 0; r = n[i++];) r = parseInt(r.replace(/[^\d]/gi, ""), 10).toString(16), t += 1 == r.length ? "0" + r : r;
								t = t.toUpperCase()
							}
							return t
						},
						clone: function(e, t) {
							var n;
							t = t || {};
							for(var r in e) e.hasOwnProperty(r) && (n = e[r], "object" == typeof n ? (t[r] = i.isArray(n) ? [] : {}, i.clone(e[r], t[r])) : t[r] = n);
							return t
						},
						transUnitToPx: function(e) {
							if(!/(pt|cm)/.test(e)) return e;
							var t;
							switch(e.replace(/([\d.]+)(\w+)/, function(n, r, i) {
								e = r, t = i
							}), t) {
								case "cm":
									e = 25 * parseFloat(e);
									break;
								case "pt":
									e = Math.round(96 * parseFloat(e) / 72)
							}
							return e + (e ? "px" : "")
						},
						domReady: function() {
							function e(e) {
								e.isReady = !0;
								for(var n; n = t.pop(); n());
							}
							var t = [];
							return function(r, i) {
								i = i || window;
								var o = i.document;
								r && t.push(r), "complete" === o.readyState ? e(o) : (o.isReady && e(o), n.ie ? (! function() {
									if(!o.isReady) {
										try {
											o.documentElement.doScroll("left")
										} catch(t) {
											return setTimeout(arguments.callee, 0), void 0
										}
										e(o)
									}
								}(), i.attachEvent("onload", function() {
									e(o)
								})) : (o.addEventListener("DOMContentLoaded", function() {
									o.removeEventListener("DOMContentLoaded", arguments.callee, !1), e(o)
								}, !1), i.addEventListener("load", function() {
									e(o)
								}, !1)))
							}
						}(),
						cssRule: n.ie ? function(e, t, n) {
							var r, i;
							n = n || document, r = n.indexList ? n.indexList : n.indexList = {};
							var o;
							if(r[e]) o = n.styleSheets[r[e]];
							else {
								if(void 0 === t) return "";
								o = n.createStyleSheet("", i = n.styleSheets.length), r[e] = i
							}
							return void 0 === t ? o.cssText : (o.cssText = t || "", void 0)
						} : function(e, t, n) {
							n = n || document;
							var r, i = n.getElementsByTagName("head")[0];
							if(!(r = n.getElementById(e))) {
								if(void 0 === t) return "";
								r = n.createElement("style"), r.id = e, i.appendChild(r)
							}
							return void 0 === t ? r.innerHTML : ("" !== t ? r.innerHTML = t : i.removeChild(r), void 0)
						}
					});
				i.each(["String", "Function", "Array", "Number", "RegExp", "Object"], function(e) {
					UE.utils["is" + e] = function(t) {
						return Object.prototype.toString.apply(t) == "[object " + e + "]"
					}
				});
				var o = UE.EventBase = function() {};
				o.prototype = {
					addListener: function(t, n) {
						t = i.trim(t).split(" ");
						for(var r, o = 0; r = t[o++];) e(this, r, !0).push(n)
					},
					removeListener: function(t, n) {
						t = i.trim(t).split(" ");
						for(var r, o = 0; r = t[o++];) i.removeItem(e(this, r) || [], n)
					},
					fireEvent: function() {
						var t = arguments[0];
						t = i.trim(t).split(" ");
						for(var n, r = 0; n = t[r++];) {
							var o, a, s, l = e(this, n);
							if(l)
								for(s = l.length; s--;)
									if(l[s]) {
										if(a = l[s].apply(this, arguments), a === !0) return a;
										void 0 !== a && (o = a)
									}(a = this["on" + n.toLowerCase()]) && (o = a.apply(this, arguments))
						}
						return o
					}
				};
				var a = t.dtd = function() {
						function e(e) {
							for(var t in e) e[t.toUpperCase()] = e[t];
							return e
						}
						var t = i.extend2,
							n = e({
								isindex: 1,
								fieldset: 1
							}),
							r = e({
								input: 1,
								button: 1,
								select: 1,
								textarea: 1,
								label: 1
							}),
							o = t(e({
								a: 1
							}), r),
							a = t({
								iframe: 1
							}, o),
							s = e({
								hr: 1,
								ul: 1,
								menu: 1,
								div: 1,
								blockquote: 1,
								noscript: 1,
								table: 1,
								center: 1,
								address: 1,
								dir: 1,
								pre: 1,
								h5: 1,
								dl: 1,
								h4: 1,
								noframes: 1,
								h6: 1,
								ol: 1,
								h1: 1,
								h3: 1,
								h2: 1
							}),
							l = e({
								ins: 1,
								del: 1,
								script: 1,
								style: 1
							}),
							d = t(e({
								b: 1,
								acronym: 1,
								bdo: 1,
								"var": 1,
								"#": 1,
								abbr: 1,
								code: 1,
								br: 1,
								i: 1,
								cite: 1,
								kbd: 1,
								u: 1,
								strike: 1,
								s: 1,
								tt: 1,
								strong: 1,
								q: 1,
								samp: 1,
								em: 1,
								dfn: 1,
								span: 1
							}), l),
							c = t(e({
								sub: 1,
								img: 1,
								embed: 1,
								object: 1,
								sup: 1,
								basefont: 1,
								map: 1,
								applet: 1,
								font: 1,
								big: 1,
								small: 1
							}), d),
							u = t(e({
								p: 1
							}), c),
							f = t(e({
								iframe: 1
							}), c, r),
							h = e({
								img: 1,
								embed: 1,
								noscript: 1,
								br: 1,
								kbd: 1,
								center: 1,
								button: 1,
								basefont: 1,
								h5: 1,
								h4: 1,
								samp: 1,
								h6: 1,
								ol: 1,
								h1: 1,
								h3: 1,
								h2: 1,
								form: 1,
								font: 1,
								"#": 1,
								select: 1,
								menu: 1,
								ins: 1,
								abbr: 1,
								label: 1,
								code: 1,
								table: 1,
								script: 1,
								cite: 1,
								input: 1,
								iframe: 1,
								strong: 1,
								textarea: 1,
								noframes: 1,
								big: 1,
								small: 1,
								span: 1,
								hr: 1,
								sub: 1,
								bdo: 1,
								"var": 1,
								div: 1,
								object: 1,
								sup: 1,
								strike: 1,
								dir: 1,
								map: 1,
								dl: 1,
								applet: 1,
								del: 1,
								isindex: 1,
								fieldset: 1,
								ul: 1,
								b: 1,
								acronym: 1,
								a: 1,
								blockquote: 1,
								i: 1,
								u: 1,
								s: 1,
								tt: 1,
								address: 1,
								q: 1,
								pre: 1,
								p: 1,
								em: 1,
								dfn: 1
							}),
							p = t(e({
								a: 0
							}), f),
							m = (e({
								tr: 1
							}), e({
								"#": 1
							}), t(e({
								param: 1
							}), h), t(e({
								form: 1
							}), n, a, s, u), e({
								li: 1,
								ol: 1,
								ul: 1
							}), e({
								style: 1,
								script: 1
							})),
							g = e({
								base: 1,
								link: 1,
								meta: 1,
								title: 1
							}),
							v = (t(g, m), e({
								head: 1,
								body: 1
							})),
							y = e({
								html: 1
							}),
							b = e({
								address: 1,
								blockquote: 1,
								center: 1,
								dir: 1,
								div: 1,
								dl: 1,
								fieldset: 1,
								form: 1,
								h1: 1,
								h2: 1,
								h3: 1,
								h4: 1,
								h5: 1,
								h6: 1,
								hr: 1,
								isindex: 1,
								menu: 1,
								noframes: 1,
								ol: 1,
								p: 1,
								pre: 1,
								table: 1,
								ul: 1
							}),
							C = e({
								area: 1,
								base: 1,
								basefont: 1,
								br: 1,
								col: 1,
								command: 1,
								dialog: 1,
								embed: 1,
								hr: 1,
								img: 1,
								input: 1,
								isindex: 1,
								keygen: 1,
								link: 1,
								meta: 1,
								param: 1,
								source: 1,
								track: 1,
								wbr: 1
							});
						return e({
							$nonBodyContent: t(y, v, g),
							$block: b,
							$inline: p,
							$inlineWithA: t(e({
								a: 1
							}), p),
							$body: t(e({
								script: 1,
								style: 1
							}), b),
							$cdata: e({
								script: 1,
								style: 1
							}),
							$empty: C,
							$nonChild: e({
								iframe: 1,
								textarea: 1
							}),
							$listItem: e({
								dd: 1,
								dt: 1,
								li: 1
							}),
							$list: e({
								ul: 1,
								ol: 1,
								dl: 1
							}),
							$isNotEmpty: e({
								table: 1,
								ul: 1,
								ol: 1,
								dl: 1,
								iframe: 1,
								area: 1,
								base: 1,
								col: 1,
								hr: 1,
								img: 1,
								embed: 1,
								input: 1,
								link: 1,
								meta: 1,
								param: 1,
								h1: 1,
								h2: 1,
								h3: 1,
								h4: 1,
								h5: 1,
								h6: 1
							}),
							$removeEmpty: e({
								a: 1,
								abbr: 1,
								acronym: 1,
								address: 1,
								b: 1,
								bdo: 1,
								big: 1,
								cite: 1,
								code: 1,
								del: 1,
								dfn: 1,
								em: 1,
								font: 1,
								i: 1,
								ins: 1,
								label: 1,
								kbd: 1,
								q: 1,
								s: 1,
								samp: 1,
								small: 1,
								span: 1,
								strike: 1,
								strong: 1,
								sub: 1,
								sup: 1,
								tt: 1,
								u: 1,
								"var": 1
							}),
							$removeEmptyBlock: e({
								p: 1,
								div: 1
							}),
							$tableContent: e({
								caption: 1,
								col: 1,
								colgroup: 1,
								tbody: 1,
								td: 1,
								tfoot: 1,
								th: 1,
								thead: 1,
								tr: 1,
								table: 1
							}),
							$notTransContent: e({
								pre: 1,
								script: 1,
								style: 1,
								textarea: 1
							}),
							p: t(e({
								a: 1
							}), p)
						})
					}(),
					s = r && n.version < 9 ? {
						tabindex: "tabIndex",
						readonly: "readOnly",
						"for": "htmlFor",
						"class": "className",
						maxlength: "maxLength",
						cellspacing: "cellSpacing",
						cellpadding: "cellPadding",
						rowspan: "rowSpan",
						colspan: "colSpan",
						usemap: "useMap",
						frameborder: "frameBorder"
					} : {
						tabindex: "tabIndex",
						readonly: "readOnly"
					},
					l = i.listToMap(["-webkit-box", "-moz-box", "block", "list-item", "table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption"]),
					d = t.domUtils = {
						NODE_ELEMENT: 1,
						NODE_DOCUMENT: 9,
						NODE_TEXT: 3,
						NODE_COMMENT: 8,
						NODE_DOCUMENT_FRAGMENT: 11,
						POSITION_IDENTICAL: 0,
						POSITION_DISCONNECTED: 1,
						POSITION_FOLLOWING: 2,
						POSITION_PRECEDING: 4,
						POSITION_IS_CONTAINED: 8,
						POSITION_CONTAINS: 16,
						fillChar: r && "6" == n.version ? "\ufeff" : "\u200b",
						keys: {
							8: 1,
							46: 1,
							16: 1,
							17: 1,
							18: 1,
							37: 1,
							38: 1,
							39: 1,
							40: 1,
							13: 1
						},
						breakParent: function(e, t) {
							var n, r, i, o = e,
								a = e;
							do {
								for(o = o.parentNode, r ? (n = o.cloneNode(!1), n.appendChild(r), r = n, n = o.cloneNode(!1), n.appendChild(i), i = n) : (r = o.cloneNode(!1), i = r.cloneNode(!1)); n = a.previousSibling;) r.insertBefore(n, r.firstChild);
								for(; n = a.nextSibling;) i.appendChild(n);
								a = o
							} while (t !== o);
							return n = t.parentNode, n.insertBefore(r, t), n.insertBefore(i, t), n.insertBefore(e, i), d.remove(t), e
						},
						trimWhiteTextNode: function(e) {
							function t(t) {
								for(var n;
									(n = e[t]) && 3 == n.nodeType && d.isWhitespace(n);) e.removeChild(n)
							}
							t("firstChild"), t("lastChild")
						},
						getPosition: function(e, t) {
							if(e === t) return 0;
							var n, r = [e],
								i = [t];
							for(n = e; n = n.parentNode;) {
								if(n === t) return 10;
								r.push(n)
							}
							for(n = t; n = n.parentNode;) {
								if(n === e) return 20;
								i.push(n)
							}
							if(r.reverse(), i.reverse(), r[0] !== i[0]) return 1;
							for(var o = -1; o++, r[o] === i[o];);
							for(e = r[o], t = i[o]; e = e.nextSibling;)
								if(e === t) return 4;
							return 2
						},
						getNodeIndex: function(e, t) {
							for(var n = e, r = 0; n = n.previousSibling;) t && 3 == n.nodeType ? n.nodeType != n.nextSibling.nodeType && r++ : r++;
							return r
						},
						inDoc: function(e, t) {
							return 10 == d.getPosition(e, t)
						},
						findParent: function(e, t, n) {
							if(e && !d.isBody(e))
								for(e = n ? e : e.parentNode; e;) {
									if(!t || t(e) || d.isBody(e)) return t && !t(e) && d.isBody(e) ? null : e;
									e = e.parentNode
								}
							return null
						},
						findParentByTagName: function(e, t, n, r) {
							return t = i.listToMap(i.isArray(t) ? t : [t]), d.findParent(e, function(e) {
								return t[e.tagName] && !(r && r(e))
							}, n)
						},
						findParents: function(e, t, n, r) {
							for(var i = t && (n && n(e) || !n) ? [e] : []; e = d.findParent(e, n);) i.push(e);
							return r ? i : i.reverse()
						},
						insertAfter: function(e, t) {
							return e.parentNode.insertBefore(t, e.nextSibling)
						},
						remove: function(e, t) {
							var n, r = e.parentNode;
							if(r) {
								if(t && e.hasChildNodes())
									for(; n = e.firstChild;) r.insertBefore(n, e);
								r.removeChild(e)
							}
							return e
						},
						isBookmarkNode: function(e) {
							return 1 == e.nodeType && e.id && /^_baidu_bookmark_/i.test(e.id)
						},
						getWindow: function(e) {
							var t = e.ownerDocument || e;
							return t.defaultView || t.parentWindow
						},
						split: function(e, t) {
							var r = e.ownerDocument;
							if(n.ie && t == e.nodeValue.length) {
								var i = r.createTextNode("");
								return d.insertAfter(e, i)
							}
							var o = e.splitText(t);
							if(n.ie8) {
								var a = r.createTextNode("");
								d.insertAfter(o, a), d.remove(a)
							}
							return o
						},
						isWhitespace: function(e) {
							return !new RegExp("[^ 	\n\r" + d.fillChar + "]").test(e.nodeValue)
						},
						getXY: function(e) {
							for(var t = 0, n = 0; e.offsetParent;) n += e.offsetTop, t += e.offsetLeft, e = e.offsetParent;
							return {
								x: t,
								y: n
							}
						},
						on: function(e, t, n) {
							var r = i.isArray(t) ? t : [t],
								o = r.length;
							if(o)
								for(; o--;)
									if(t = r[o], e.addEventListener) e.addEventListener(t, n, !1);
									else {
										n._d || (n._d = {
											els: []
										});
										var a = t + n.toString(),
											s = i.indexOf(n._d.els, e);
										n._d[a] && -1 != s || (-1 == s && n._d.els.push(e), n._d[a] || (n._d[a] = function(e) {
											return n.call(e.srcElement, e || window.event)
										}), e.attachEvent("on" + t, n._d[a]))
									}
							e = null
						},
						un: function(e, t, n) {
							var r = i.isArray(t) ? t : [t],
								o = r.length;
							if(o)
								for(; o--;)
									if(t = r[o], e.removeEventListener) e.removeEventListener(t, n, !1);
									else {
										var a = t + n.toString();
										try {
											e.detachEvent("on" + t, n._d ? n._d[a] : n)
										} catch(s) {}
										if(n._d && n._d[a]) {
											var l = i.indexOf(n._d.els, e); - 1 != l && n._d.els.splice(l, 1), 0 == n._d.els.length && delete n._d[a]
										}
									}
						},
						isEmptyInlineElement: function(e) {
							if(1 != e.nodeType || !a.$removeEmpty[e.tagName]) return 0;
							for(e = e.firstChild; e;) {
								if(d.isBookmarkNode(e)) return 0;
								if(1 == e.nodeType && !d.isEmptyInlineElement(e) || 3 == e.nodeType && !d.isWhitespace(e)) return 0;
								e = e.nextSibling
							}
							return 1
						},
						isBlockElm: function(e) {
							return 1 == e.nodeType && (a.$block[e.tagName] || l[d.getComputedStyle(e, "display")]) && !a.$nonChild[e.tagName]
						},
						getElementsByTagName: function(e, t, n) {
							if(n && i.isString(n)) {
								var r = n;
								n = function(e) {
									var t = !1;
									return $.each(i.trim(r).replace(/[ ]{2,}/g, " ").split(" "), function(n, r) {
										return $(e).hasClass(r) ? (t = !0, !1) : void 0
									}), t
								}
							}
							t = i.trim(t).replace(/[ ]{2,}/g, " ").split(" ");
							for(var o, a = [], s = 0; o = t[s++];)
								for(var l, d = e.getElementsByTagName(o), c = 0; l = d[c++];)(!n || n(l)) && a.push(l);
							return a
						},
						unSelectable: r || n.opera ? function(e) {
							e.onselectstart = function() {
								return !1
							}, e.onclick = e.onkeyup = e.onkeydown = function() {
								return !1
							}, e.unselectable = "on", e.setAttribute("unselectable", "on");
							for(var t, n = 0; t = e.all[n++];) switch(t.tagName.toLowerCase()) {
								case "iframe":
								case "textarea":
								case "input":
								case "select":
									break;
								default:
									t.unselectable = "on", e.setAttribute("unselectable", "on")
							}
						} : function(e) {
							e.style.MozUserSelect = e.style.webkitUserSelect = e.style.KhtmlUserSelect = "none"
						},
						removeAttributes: function(e, t) {
							t = i.isArray(t) ? t : i.trim(t).replace(/[ ]{2,}/g, " ").split(" ");
							for(var r, o = 0; r = t[o++];) {
								switch(r = s[r] || r) {
									case "className":
										e[r] = "";
										break;
									case "style":
										e.style.cssText = "", !n.ie && e.removeAttributeNode(e.getAttributeNode("style"))
								}
								e.removeAttribute(r)
							}
						},
						createElement: function(e, t, n) {
							return d.setAttributes(e.createElement(t), n)
						},
						setAttributes: function(e, t) {
							for(var n in t)
								if(t.hasOwnProperty(n)) {
									var r = t[n];
									switch(n) {
										case "class":
											e.className = r;
											break;
										case "style":
											e.style.cssText = e.style.cssText + ";" + r;
											break;
										case "innerHTML":
											e[n] = r;
											break;
										case "value":
											e.value = r;
											break;
										default:
											e.setAttribute(s[n] || n, r)
									}
								}
							return e
						},
						getComputedStyle: function(e, t) {
							return i.transUnitToPx(i.fixColor(t, $(e).css(t)))
						},
						preventDefault: function(e) {
							e.preventDefault ? e.preventDefault() : e.returnValue = !1
						},
						getStyle: function(e, t) {
							var n = e.style[i.cssStyleToDomStyle(t)];
							return i.fixColor(t, n)
						},
						setStyle: function(e, t, n) {
							e.style[i.cssStyleToDomStyle(t)] = n, i.trim(e.style.cssText) || this.removeAttributes(e, "style")
						},
						removeDirtyAttr: function(e) {
							for(var t, n = 0, r = e.getElementsByTagName("*"); t = r[n++];) t.removeAttribute("_moz_dirty");
							e.removeAttribute("_moz_dirty")
						},
						getChildCount: function(e, t) {
							var n = 0,
								r = e.firstChild;
							for(t = t || function() {
									return 1
								}; r;) t(r) && n++, r = r.nextSibling;
							return n
						},
						isEmptyNode: function(e) {
							return !e.firstChild || 0 == d.getChildCount(e, function(e) {
								return !d.isBr(e) && !d.isBookmarkNode(e) && !d.isWhitespace(e)
							})
						},
						isBr: function(e) {
							return 1 == e.nodeType && "BR" == e.tagName
						},
						isFillChar: function(e, t) {
							return 3 == e.nodeType && !e.nodeValue.replace(new RegExp((t ? "^" : "") + d.fillChar), "").length
						},
						isEmptyBlock: function(e, t) {
							if(1 != e.nodeType) return 0;
							if(t = t || new RegExp("[ 	\r\n" + d.fillChar + "]", "g"), e[n.ie ? "innerText" : "textContent"].replace(t, "").length > 0) return 0;
							for(var r in a.$isNotEmpty)
								if(e.getElementsByTagName(r).length) return 0;
							return 1
						},
						isCustomeNode: function(e) {
							return 1 == e.nodeType && e.getAttribute("_ue_custom_node_")
						},
						fillNode: function(e, t) {
							var r = n.ie ? e.createTextNode(d.fillChar) : e.createElement("br");
							t.innerHTML = "", t.appendChild(r)
						},
						isBoundaryNode: function(e, t) {
							for(var n; !d.isBody(e);)
								if(n = e, e = e.parentNode, n !== e[t]) return !1;
							return !0
						},
						isFillChar: function(e, t) {
							return 3 == e.nodeType && !e.nodeValue.replace(new RegExp((t ? "^" : "") + d.fillChar), "").length
						}
					},
					c = new RegExp(d.fillChar, "g");
				! function() {
					function e(e) {
						e.collapsed = e.startContainer && e.endContainer && e.startContainer === e.endContainer && e.startOffset == e.endOffset
					}

					function r(e) {
						return !e.collapsed && 1 == e.startContainer.nodeType && e.startContainer === e.endContainer && e.endOffset - e.startOffset == 1
					}

					function i(t, n, r, i) {
						return 1 == n.nodeType && (a.$empty[n.tagName] || a.$nonChild[n.tagName]) && (r = d.getNodeIndex(n) + (t ? 0 : 1), n = n.parentNode), t ? (i.startContainer = n, i.startOffset = r, i.endContainer || i.collapse(!0)) : (i.endContainer = n, i.endOffset = r, i.startContainer || i.collapse(!1)), e(i), i
					}

					function o(e, t) {
						try {
							if(u && d.inDoc(u, e))
								if(u.nodeValue.replace(c, "").length) u.nodeValue = u.nodeValue.replace(c, "");
								else {
									var r = u.parentNode;
									for(d.remove(u); r && d.isEmptyInlineElement(r) && (n.safari ? !(d.getPosition(r, t) & d.POSITION_CONTAINS) : !r.contains(t));) u = r.parentNode, d.remove(r), r = u
								}
						} catch(i) {}
					}

					function s(e, t) {
						var n;
						for(e = e[t]; e && d.isFillChar(e);) n = e[t], d.remove(e), e = n
					}

					function l(e, t) {
						var n, r, i = e.startContainer,
							o = e.endContainer,
							a = e.startOffset,
							s = e.endOffset,
							l = e.document,
							c = l.createDocumentFragment();
						if(1 == i.nodeType && (i = i.childNodes[a] || (n = i.appendChild(l.createTextNode("")))), 1 == o.nodeType && (o = o.childNodes[s] || (r = o.appendChild(l.createTextNode("")))), i === o && 3 == i.nodeType) return c.appendChild(l.createTextNode(i.substringData(a, s - a))), t && (i.deleteData(a, s - a), e.collapse(!0)), c;
						for(var u, f, h = c, p = d.findParents(i, !0), m = d.findParents(o, !0), g = 0; p[g] == m[g];) g++;
						for(var v, y = g; v = p[y]; y++) {
							for(u = v.nextSibling, v == i ? n || (3 == e.startContainer.nodeType ? (h.appendChild(l.createTextNode(i.nodeValue.slice(a))), t && i.deleteData(a, i.nodeValue.length - a)) : h.appendChild(t ? i : i.cloneNode(!0))) : (f = v.cloneNode(!1), h.appendChild(f)); u && u !== o && u !== m[y];) v = u.nextSibling, h.appendChild(t ? u : u.cloneNode(!0)), u = v;
							h = f
						}
						h = c, p[g] || (h.appendChild(p[g - 1].cloneNode(!1)), h = h.firstChild);
						for(var b, y = g; b = m[y]; y++) {
							if(u = b.previousSibling, b == o ? r || 3 != e.endContainer.nodeType || (h.appendChild(l.createTextNode(o.substringData(0, s))), t && o.deleteData(0, s)) : (f = b.cloneNode(!1), h.appendChild(f)), y != g || !p[g])
								for(; u && u !== i;) b = u.previousSibling, h.insertBefore(t ? u : u.cloneNode(!0), h.firstChild), u = b;
							h = f
						}
						return t && e.setStartBefore(m[g] ? p[g] ? m[g] : p[g - 1] : m[g - 1]).collapse(!0), n && d.remove(n), r && d.remove(r), c
					}
					var u, f = 0,
						h = d.fillChar,
						p = t.Range = function(e, t) {
							var n = this;
							n.startContainer = n.startOffset = n.endContainer = n.endOffset = null, n.document = e, n.collapsed = !0, n.body = t
						};
					p.prototype = {
						deleteContents: function() {
							var e;
							return this.collapsed || l(this, 1), n.webkit && (e = this.startContainer, 3 != e.nodeType || e.nodeValue.length || (this.setStartBefore(e).collapse(!0), d.remove(e))), this
						},
						inFillChar: function() {
							var e = this.startContainer;
							return this.collapsed && 3 == e.nodeType && e.nodeValue.replace(new RegExp("^" + d.fillChar), "").length + 1 == e.nodeValue.length ? !0 : !1
						},
						setStart: function(e, t) {
							return i(!0, e, t, this)
						},
						setEnd: function(e, t) {
							return i(!1, e, t, this)
						},
						setStartAfter: function(e) {
							return this.setStart(e.parentNode, d.getNodeIndex(e) + 1)
						},
						setStartBefore: function(e) {
							return this.setStart(e.parentNode, d.getNodeIndex(e))
						},
						setEndAfter: function(e) {
							return this.setEnd(e.parentNode, d.getNodeIndex(e) + 1)
						},
						setEndBefore: function(e) {
							return this.setEnd(e.parentNode, d.getNodeIndex(e))
						},
						setStartAtFirst: function(e) {
							return this.setStart(e, 0)
						},
						setStartAtLast: function(e) {
							return this.setStart(e, 3 == e.nodeType ? e.nodeValue.length : e.childNodes.length)
						},
						setEndAtFirst: function(e) {
							return this.setEnd(e, 0)
						},
						setEndAtLast: function(e) {
							return this.setEnd(e, 3 == e.nodeType ? e.nodeValue.length : e.childNodes.length)
						},
						selectNode: function(e) {
							return this.setStartBefore(e).setEndAfter(e)
						},
						selectNodeContents: function(e) {
							return this.setStart(e, 0).setEndAtLast(e)
						},
						cloneRange: function() {
							var e = this;
							return new p(e.document).setStart(e.startContainer, e.startOffset).setEnd(e.endContainer, e.endOffset)
						},
						collapse: function(e) {
							var t = this;
							return e ? (t.endContainer = t.startContainer, t.endOffset = t.startOffset) : (t.startContainer = t.endContainer, t.startOffset = t.endOffset), t.collapsed = !0, t
						},
						shrinkBoundary: function(e) {
							function t(e) {
								return 1 == e.nodeType && !d.isBookmarkNode(e) && !a.$empty[e.tagName] && !a.$nonChild[e.tagName]
							}
							for(var n, r = this, i = r.collapsed; 1 == r.startContainer.nodeType && (n = r.startContainer.childNodes[r.startOffset]) && t(n);) r.setStart(n, 0);
							if(i) return r.collapse(!0);
							if(!e)
								for(; 1 == r.endContainer.nodeType && r.endOffset > 0 && (n = r.endContainer.childNodes[r.endOffset - 1]) && t(n);) r.setEnd(n, n.childNodes.length);
							return r
						},
						trimBoundary: function(e) {
							this.txtToElmBoundary();
							var t = this.startContainer,
								n = this.startOffset,
								r = this.collapsed,
								i = this.endContainer;
							if(3 == t.nodeType) {
								if(0 == n) this.setStartBefore(t);
								else if(n >= t.nodeValue.length) this.setStartAfter(t);
								else {
									var o = d.split(t, n);
									t === i ? this.setEnd(o, this.endOffset - n) : t.parentNode === i && (this.endOffset += 1), this.setStartBefore(o)
								}
								if(r) return this.collapse(!0)
							}
							return e || (n = this.endOffset, i = this.endContainer, 3 == i.nodeType && (0 == n ? this.setEndBefore(i) : (n < i.nodeValue.length && d.split(i, n), this.setEndAfter(i)))), this
						},
						txtToElmBoundary: function(e) {
							function t(e, t) {
								var n = e[t + "Container"],
									r = e[t + "Offset"];
								3 == n.nodeType && (r ? r >= n.nodeValue.length && e["set" + t.replace(/(\w)/, function(e) {
									return e.toUpperCase()
								}) + "After"](n) : e["set" + t.replace(/(\w)/, function(e) {
									return e.toUpperCase()
								}) + "Before"](n))
							}
							return(e || !this.collapsed) && (t(this, "start"), t(this, "end")), this
						},
						insertNode: function(e) {
							var t = e,
								n = 1;
							11 == e.nodeType && (t = e.firstChild, n = e.childNodes.length), this.trimBoundary(!0);
							var r = this.startContainer,
								i = this.startOffset,
								o = r.childNodes[i];
							return o ? r.insertBefore(e, o) : r.appendChild(e), t.parentNode === this.endContainer && (this.endOffset = this.endOffset + n), this.setStartBefore(t)
						},
						setCursor: function(e, t) {
							return this.collapse(!e).select(t)
						},
						createBookmark: function(e, t) {
							var n, r = this.document.createElement("span");
							return r.style.cssText = "display:none;line-height:0px;", r.appendChild(this.document.createTextNode("\u200d")), r.id = "_baidu_bookmark_start_" + (t ? "" : f++), this.collapsed || (n = r.cloneNode(!0), n.id = "_baidu_bookmark_end_" + (t ? "" : f++)), this.insertNode(r), n && this.collapse().insertNode(n).setEndBefore(n), this.setStartAfter(r), {
								start: e ? r.id : r,
								end: n ? e ? n.id : n : null,
								id: e
							}
						},
						moveToBookmark: function(e) {
							var t = e.id ? this.document.getElementById(e.start) : e.start,
								n = e.end && e.id ? this.document.getElementById(e.end) : e.end;
							return this.setStartBefore(t), d.remove(t), n ? (this.setEndBefore(n), d.remove(n)) : this.collapse(!0), this
						},
						adjustmentBoundary: function() {
							if(!this.collapsed) {
								for(; !d.isBody(this.startContainer) && this.startOffset == this.startContainer[3 == this.startContainer.nodeType ? "nodeValue" : "childNodes"].length && this.startContainer[3 == this.startContainer.nodeType ? "nodeValue" : "childNodes"].length;) this.setStartAfter(this.startContainer);
								for(; !d.isBody(this.endContainer) && !this.endOffset && this.endContainer[3 == this.endContainer.nodeType ? "nodeValue" : "childNodes"].length;) this.setEndBefore(this.endContainer)
							}
							return this
						},
						getClosedNode: function() {
							var e;
							if(!this.collapsed) {
								var t = this.cloneRange().adjustmentBoundary().shrinkBoundary();
								if(r(t)) {
									var n = t.startContainer.childNodes[t.startOffset];
									n && 1 == n.nodeType && (a.$empty[n.tagName] || a.$nonChild[n.tagName]) && (e = n)
								}
							}
							return e
						},
						select: n.ie ? function(e, t) {
							var n;
							this.collapsed || this.shrinkBoundary();
							var r = this.getClosedNode();
							if(r && !t) {
								try {
									n = this.document.body.createControlRange(), n.addElement(r), n.select()
								} catch(i) {}
								return this
							}
							var a, l = this.createBookmark(),
								c = l.start;
							if(n = this.document.body.createTextRange(), n.moveToElementText(c), n.moveStart("character", 1), this.collapsed) {
								if(!e && 3 != this.startContainer.nodeType) {
									var f = this.document.createTextNode(h),
										p = this.document.createElement("span");
									p.appendChild(this.document.createTextNode(h)), c.parentNode.insertBefore(p, c), c.parentNode.insertBefore(f, c), o(this.document, f), u = f, s(p, "previousSibling"), s(c, "nextSibling"), n.moveStart("character", -1), n.collapse(!0)
								}
							} else {
								var m = this.document.body.createTextRange();
								a = l.end, m.moveToElementText(a), n.setEndPoint("EndToEnd", m)
							}
							this.moveToBookmark(l), p && d.remove(p);
							try {
								n.select()
							} catch(i) {}
							return this
						} : function(e) {
							function t(e) {
								function t(t, n, r) {
									3 == t.nodeType && t.nodeValue.length < n && (e[r + "Offset"] = t.nodeValue.length)
								}
								t(e.startContainer, e.startOffset, "start"), t(e.endContainer, e.endOffset, "end")
							}
							var r, i = d.getWindow(this.document),
								a = i.getSelection();
							if(n.gecko ? this.body.focus() : i.focus(), a) {
								if(a.removeAllRanges(), this.collapsed && !e) {
									var l = this.startContainer,
										c = l;
									1 == l.nodeType && (c = l.childNodes[this.startOffset]), 3 == l.nodeType && this.startOffset || (c ? c.previousSibling && 3 == c.previousSibling.nodeType : l.lastChild && 3 == l.lastChild.nodeType) || (r = this.document.createTextNode(h), this.insertNode(r), o(this.document, r), s(r, "previousSibling"), s(r, "nextSibling"), u = r, this.setStart(r, n.webkit ? 1 : 0).collapse(!0))
								}
								var f = this.document.createRange();
								if(this.collapsed && n.opera && 1 == this.startContainer.nodeType) {
									var c = this.startContainer.childNodes[this.startOffset];
									if(c) {
										for(; c && d.isBlockElm(c) && 1 == c.nodeType && c.childNodes[0];) c = c.childNodes[0];
										c && this.setStartBefore(c).collapse(!0)
									} else c = this.startContainer.lastChild, c && d.isBr(c) && this.setStartBefore(c).collapse(!0)
								}
								t(this), f.setStart(this.startContainer, this.startOffset), f.setEnd(this.endContainer, this.endOffset), a.addRange(f)
							}
							return this
						},
						createAddress: function(e, t) {
							function n(e) {
								for(var n, r = e ? i.startContainer : i.endContainer, o = d.findParents(r, !0, function(e) {
										return !d.isBody(e)
									}), a = [], s = 0; n = o[s++];) a.push(d.getNodeIndex(n, t));
								var l = 0;
								if(t)
									if(3 == r.nodeType) {
										for(var u = r.previousSibling; u && 3 == u.nodeType;) l += u.nodeValue.replace(c, "").length, u = u.previousSibling;
										l += e ? i.startOffset : i.endOffset
									} else if(r = r.childNodes[e ? i.startOffset : i.endOffset]) l = d.getNodeIndex(r, t);
								else {
									r = e ? i.startContainer : i.endContainer;
									for(var f = r.firstChild; f;)
										if(d.isFillChar(f)) f = f.nextSibling;
										else if(l++, 3 == f.nodeType)
										for(; f && 3 == f.nodeType;) f = f.nextSibling;
									else f = f.nextSibling
								} else l = e ? d.isFillChar(r) ? 0 : i.startOffset : i.endOffset;
								return 0 > l && (l = 0), a.push(l), a
							}
							var r = {},
								i = this;
							return r.startAddress = n(!0), e || (r.endAddress = i.collapsed ? [].concat(r.startAddress) : n()), r
						},
						moveToAddress: function(e, t) {
							function n(e, t) {
								for(var n, i, o, a = r.body, s = 0, l = e.length; l > s; s++)
									if(o = e[s], n = a, a = a.childNodes[o], !a) {
										i = o;
										break
									}
								t ? a ? r.setStartBefore(a) : r.setStart(n, i) : a ? r.setEndBefore(a) : r.setEnd(n, i)
							}
							var r = this;
							return n(e.startAddress, !0), !t && e.endAddress && n(e.endAddress), r
						},
						equals: function(e) {
							for(var t in this)
								if(this.hasOwnProperty(t) && this[t] !== e[t]) return !1;
							return !0
						},
						scrollIntoView: function() {
							var e = $('<span style="padding:0;margin:0;display:block;border:0">&nbsp;</span>');
							this.cloneRange().insertNode(e.get(0));
							var t = $(window).scrollTop(),
								n = $(window).height(),
								r = e.offset().top;
							(t - n > r || r > t + n) && (r > t + n ? window.scrollTo(0, r - n + e.height()) : window.scrollTo(0, t - r)), e.remove()
						}
					}
				}(),
				function() {
					function e(e, t) {
						var n = d.getNodeIndex;
						e = e.duplicate(), e.collapse(t);
						var r = e.parentElement();
						if(!r.hasChildNodes()) return {
							container: r,
							offset: 0
						};
						for(var i, o, s = r.children, l = e.duplicate(), c = 0, u = s.length - 1, f = -1; u >= c;) {
							f = Math.floor((c + u) / 2), i = s[f], l.moveToElementText(i);
							var h = l.compareEndPoints("StartToStart", e);
							if(h > 0) u = f - 1;
							else {
								if(!(0 > h)) return {
									container: r,
									offset: n(i)
								};
								c = f + 1
							}
						}
						if(-1 == f) {
							if(l.moveToElementText(r), l.setEndPoint("StartToStart", e), o = l.text.replace(/(\r\n|\r)/g, "\n").length, s = r.childNodes, !o) return i = s[s.length - 1], {
								container: i,
								offset: i.nodeValue.length
							};
							for(var p = s.length; o > 0;) o -= s[--p].nodeValue.length;
							return {
								container: s[p],
								offset: -o
							}
						}
						if(l.collapse(h > 0), l.setEndPoint(h > 0 ? "StartToStart" : "EndToStart", e), o = l.text.replace(/(\r\n|\r)/g, "\n").length, !o) return a.$empty[i.tagName] || a.$nonChild[i.tagName] ? {
							container: r,
							offset: n(i) + (h > 0 ? 0 : 1)
						} : {
							container: i,
							offset: h > 0 ? 0 : i.childNodes.length
						};
						for(; o > 0;) try {
							var m = i;
							i = i[h > 0 ? "previousSibling" : "nextSibling"], o -= i.nodeValue.length
						} catch(g) {
							return {
								container: r,
								offset: n(m)
							}
						}
						return {
							container: i,
							offset: h > 0 ? -o : i.nodeValue.length + o
						}
					}

					function r(t, n) {
						if(t.item) n.selectNode(t.item(0));
						else {
							var r = e(t, !0);
							n.setStart(r.container, r.offset), 0 != t.compareEndPoints("StartToEnd", t) && (r = e(t, !1), n.setEnd(r.container, r.offset))
						}
						return n
					}

					function i(e, t) {
						var n;
						try {
							n = e.getNative(t).createRange()
						} catch(r) {
							return null
						}
						var i = n.item ? n.item(0) : n.parentElement();
						return(i.ownerDocument || i) === e.document ? n : null
					}
					var o = t.Selection = function(e, t) {
						var r = this;
						r.document = e, r.body = t, n.ie9below && (d.on(t, "beforedeactivate", function() {
							r._bakIERange = r.getIERange()
						}), d.on(t, "activate", function() {
							try {
								var e = i(r);
								e && r.rangeInBody(e) || !r._bakIERange || r._bakIERange.select()
							} catch(t) {}
							r._bakIERange = null
						}))
					};
					o.prototype = {
						hasNativeRange: function() {
							if(!n.ie || n.ie9above) return this.getNative().rangeCount;
							try {
								var e = this.getIERange(),
									t = e.parentElement();
								return t === this.body || d.inDoc(e.parentElement(), this.body)
							} catch(r) {
								return !1
							}
						},
						getNative: function(e) {
							var t = this.document;
							try {
								return t ? n.ie9below || e ? t.selection : d.getWindow(t).getSelection() : null
							} catch(r) {
								return null
							}
						},
						getIERange: function(e) {
							var t = i(this, e);
							return t && this.rangeInBody(t, e) || !this._bakIERange ? t : this._bakIERange
						},
						rangeInBody: function(e, t) {
							var r = n.ie9below || t ? e.item ? e.item() : e.parentElement() : e.startContainer;
							return r === this.body || d.inDoc(r, this.body)
						},
						cache: function() {
							this.clear(), this._cachedRange = this.getRange(), this._cachedStartElement = this.getStart(), this._cachedStartElementPath = this.getStartElementPath()
						},
						getStartElementPath: function() {
							if(this._cachedStartElementPath) return this._cachedStartElementPath;
							var e = this.getStart();
							return e ? d.findParents(e, !0, null, !0) : []
						},
						clear: function() {
							this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null
						},
						isFocus: function() {
							try {
								return n.ie && i(this) || !n.ie && this.getNative().rangeCount ? !0 : !1
							} catch(e) {
								return !1
							}
						},
						getRange: function() {
							function e(e) {
								for(var t = i.body.firstChild, n = e.collapsed; t && t.firstChild;) e.setStart(t, 0), t = t.firstChild;
								e.startContainer || e.setStart(i.body, 0), n && e.collapse(!0)
							}
							var i = this;
							if(null != i._cachedRange) return this._cachedRange;
							var o = new t.Range(i.document, i.body);
							if(n.ie9below) {
								var a = i.getIERange();
								if(a) try {
									r(a, o)
								} catch(s) {
									e(o)
								} else e(o)
							} else {
								var l = i.getNative();
								if(l && l.rangeCount && i.rangeInBody(l.getRangeAt(0))) {
									var c = l.getRangeAt(0),
										u = l.getRangeAt(l.rangeCount - 1);
									o.setStart(c.startContainer, c.startOffset).setEnd(u.endContainer, u.endOffset), o.collapsed && d.isBody(o.startContainer) && !o.startOffset && e(o)
								} else {
									if(this._bakRange && d.inDoc(this._bakRange.startContainer, this.document)) return this._bakRange;
									e(o)
								}
							}
							return this._bakRange = o
						},
						getStart: function() {
							if(this._cachedStartElement) return this._cachedStartElement;
							var e, t, r, i, o = n.ie9below ? this.getIERange() : this.getRange();
							if(n.ie9below) {
								if(!o) return this.document.body.firstChild;
								if(o.item) return o.item(0);
								for(e = o.duplicate(), e.text.length > 0 && e.moveStart("character", 1), e.collapse(1), t = e.parentElement(), i = r = o.parentElement(); r = r.parentNode;)
									if(r == t) {
										t = i;
										break
									}
							} else if(t = o.startContainer, 1 == t.nodeType && t.hasChildNodes() && (t = t.childNodes[Math.min(t.childNodes.length - 1, o.startOffset)]), 3 == t.nodeType) return t.parentNode;
							return t
						},
						getText: function() {
							var e, t;
							return this.isFocus() && (e = this.getNative()) ? (t = n.ie9below ? e.createRange() : e.getRangeAt(0), n.ie9below ? t.text : t.toString()) : ""
						}
					}
				}(),
				function() {
					function e(e, t) {
						var n;
						if(t.textarea)
							if(i.isString(t.textarea)) {
								for(var r, o = 0, a = d.getElementsByTagName(e, "textarea"); r = a[o++];)
									if(r.id == "ueditor_textarea_" + t.options.textarea) {
										n = r;
										break
									}
							} else n = t.textarea;
						n || (e.appendChild(n = d.createElement(document, "textarea", {
							name: t.options.textarea,
							id: "ueditor_textarea_" + t.options.textarea,
							style: "display:none"
						})), t.textarea = n), n.value = t.hasContents() ? t.options.allHtmlEnabled ? t.getAllHtml() : t.getContent(null, null, !0) : ""
					}

					function s(e) {
						for(var t in UE.plugins) e.options.excludePlugins = $.isArray(e.options.excludePlugins) ? e.options.excludePlugins : [e.options.excludePlugins], -1 == $.inArray(t, e.options.excludePlugins) && UE.plugins[t].call(e);
						e.langIsReady = !0, e.fireEvent("langReady")
					}

					function l(e) {
						for(var t in e) return t
					}
					var c, u = 0,
						f = UE.Editor = function(e) {
							var t = this;
							t.uid = u++, o.call(t), t.commands = {}, t.options = i.extend(i.clone(e || {}), UEDITOR_CONFIG, !0), t.shortcutkeys = {}, t.inputRules = [], t.outputRules = [], t.setOpt({
								isShow: !0,
								initialContent: "",
								initialStyle: ".edui-editor-body .edui-body-container p{margin:5px 0;} .edui-editor-body .edui-body-container{border:0;outline:none;cursor:text;padding:0 10px 0;word-wrap:break-word;font-size:16px;font-family:sans-serif;}.edui-editor-body.focus{border:1px solid #5c9dff}",
								autoClearinitialContent: !1,
								iframeCssUrl: t.options.UEDITOR_HOME_URL + "themes/iframe.css",
								textarea: "editorValue",
								focus: !1,
								focusInEnd: !0,
								autoClearEmptyNode: !0,
								fullscreen: !1,
								readonly: !1,
								zIndex: 999,
								imagePopup: !0,
								enterTag: "p",
								customDomain: !1,
								lang: "zh-cn",
								langPath: t.options.UEDITOR_HOME_URL + "lang/",
								theme: "default",
								themePath: t.options.UEDITOR_HOME_URL + "themes/",
								allHtmlEnabled: !1,
								scaleEnabled: !1,
								tableNativeEditInFF: !1,
								autoSyncData: !0,
								excludePlugins: ""
							}), i.isEmptyObject(UE.I18N) ? i.loadFile(document, {
								src: t.options.langPath + t.options.lang + "/" + t.options.lang + ".js",
								tag: "script",
								type: "text/javascript",
								defer: "defer"
							}, function() {
								s(t)
							}) : (t.options.lang = l(UE.I18N), s(t)), UE.instants["ueditorInstant" + t.uid] = t
						};
					f.prototype = {
						ready: function(e) {
							var t = this;
							e && (t.isReady ? e.apply(t) : t.addListener("ready", e))
						},
						setOpt: function(e, t) {
							var n = {};
							i.isString(e) ? n[e] = t : n = e, i.extend(this.options, n, !0)
						},
						getOpt: function(e) {
							return this.options[e] || ""
						},
						destroy: function() {
							var e = this;
							e.fireEvent("destroy");
							var t = e.container.parentNode;
							t === document.body && (t = e.container);
							var n = e.textarea;
							n ? n.style.display = "" : (n = document.createElement("textarea"), t.parentNode.insertBefore(n, t)), n.style.width = e.body.offsetWidth + "px", n.style.height = e.body.offsetHeight + "px", n.value = e.getContent(), n.id = e.key, t.innerHTML = "", d.remove(t);
							var r = e.key;
							for(var i in e) e.hasOwnProperty(i) && delete this[i];
							UE.clearCache(r)
						},
						initialCont: function(e) {
							if(e) {
								if(e.getAttribute("name") && (this.options.textarea = e.getAttribute("name")), e && /script|textarea/gi.test(e.tagName)) {
									var t = document.createElement("div");
									e.parentNode.insertBefore(t, e), this.options.initialContent = UE.htmlparser(e.value || e.innerHTML || this.options.initialContent).toHtml(), e.className && (t.className = e.className), e.style.cssText && (t.style.cssText = e.style.cssText), /textarea/i.test(e.tagName) ? (this.textarea = e, this.textarea.style.display = "none") : (e.parentNode.removeChild(e), e.id && (t.id = e.id)), e = t, e.innerHTML = ""
								}
								return e
							}
							return null
						},
						render: function(e) {
							var t = this,
								r = t.options,
								o = function(t) {
									var n = parseInt($(e).css(t));
									return isNaN(n) && (n = 0), n
								};
							if(i.isString(e) && (e = document.getElementById(e)), e) {
								i.cssRule("ueditor_body_css" + e.id, t.options.initialStyle, document), e = this.initialCont(e), e.className += " edui-body-container", r.minFrameWidth = r.initialFrameWidth ? r.initialFrameWidth : r.initialFrameWidth = $(e).width(), r.initialFrameHeight ? r.minFrameHeight = r.initialFrameHeight : r.initialFrameHeight = r.minFrameHeight = $(e).height(), e.style.width = r.contentWidth ? r.contentWidth + "px" : /%$/.test(r.initialFrameWidth) ? "100%" : r.initialFrameWidth - 20 - o("border-left") - o("border-right") - o("padding-left") - o("padding-right") + "px";
								var a = /%$/.test(r.initialFrameHeight) ? "100%" : r.initialFrameHeight - o("padding-top") - o("padding-bottom");
								e.style.minHeight = a + "px", e.style.height = "", e.style.zIndex = r.zIndex, n.ie && n.version <= 6 && (e.style.height = a, e.style.setExpression("height", "this.scrollHeight <= " + a + ' ? "' + a + 'px" : "auto"')), this._setup(e)
							}
						},
						resize: function(e, t) {
							var n = this;
							"number" == typeof e && e >= 0 && (n.body.style.width = e + "px"), "number" == typeof t && t >= 0 && (n.body.style.minHeight = t + "px"), n.fireEvent("resize", e, t)
						},
						_setup: function(r) {
							var i = this,
								o = i.options;
							r.contentEditable = !0, document.body.spellcheck = !1, i.document = document, i.window = document.defaultView || document.parentWindow, i.body = r, i.$body = $(r), d.isBody = function(e) {
								return e === r
							}, i.selection = new t.Selection(document, i.body);
							var a;
							n.gecko && (a = this.selection.getNative()) && a.removeAllRanges(), this._initEvents();
							for(var s = r.parentNode; s && !d.isBody(s); s = s.parentNode)
								if("FORM" == s.tagName) {
									i.form = s, i.options.autoSyncData ? d.on(r, "blur", function() {
										e(s, i)
									}) : d.on(s, "submit", function() {
										e(this, i)
									});
									break
								}
							if(o.initialContent)
								if(o.autoClearinitialContent) {
									var l = i.execCommand;
									i.execCommand = function() {
										return i.fireEvent("firstBeforeExecCommand"), l.apply(i, arguments)
									}, this._setDefaultContent(o.initialContent)
								} else this.setContent(o.initialContent, !1, !0);
							d.isEmptyNode(i.body) && (i.body.innerHTML = "<p>" + (n.ie ? "" : "<br/>") + "</p>"), o.focus && setTimeout(function() {
								i.focus(i.options.focusInEnd), !i.options.autoClearinitialContent && i._selectionChange()
							}, 0), i.container || (i.container = r.parentNode), i._bindshortcutKeys(), i.isReady = 1, i.fireEvent("ready"), o.onready && o.onready.call(i), (!n.ie || n.ie9above) && d.on(i.body, ["blur", "focus"], function(e) {
								var t = i.selection.getNative();
								if("blur" == e.type) t.rangeCount > 0 && (i._bakRange = t.getRangeAt(0));
								else {
									try {
										i._bakRange && t.addRange(i._bakRange)
									} catch(e) {}
									i._bakRange = null
								}
							}), !o.isShow && i.setHide(), o.readonly && i.setDisabled()
						},
						sync: function(t) {
							var n = this,
								r = t ? document.getElementById(t) : d.findParent(n.iframe.parentNode, function(e) {
									return "FORM" == e.tagName
								}, !0);
							r && e(r, n)
						},
						setHeight: function(e, t) {
							!t && (this.options.initialFrameHeight = e), this.body.style.height = e + "px"
						},
						addshortcutkey: function(e, t) {
							var n = {};
							t ? n[e] = t : n = e, i.extend(this.shortcutkeys, n)
						},
						_bindshortcutKeys: function() {
							var e = this,
								t = this.shortcutkeys;
							e.addListener("keydown", function(n, r) {
								var i = r.keyCode || r.which;
								for(var o in t)
									for(var a, s = t[o].split(","), l = 0; a = s[l++];) {
										a = a.split(":");
										var c = a[0],
											u = a[1];
										(/^(ctrl)(\+shift)?\+(\d+)$/.test(c.toLowerCase()) || /^(\d+)$/.test(c)) && (("ctrl" == RegExp.$1 ? r.ctrlKey || r.metaKey : 0) && ("" != RegExp.$2 ? r[RegExp.$2.slice(1) + "Key"] : 1) && i == RegExp.$3 || i == RegExp.$1) && (-1 != e.queryCommandState(o, u) && e.execCommand(o, u), d.preventDefault(r))
									}
							})
						},
						getContent: function(e, t, n, r, o) {
							var a = this;
							if(e && i.isFunction(e) && (t = e, e = ""), t ? !t() : !this.hasContents()) return "";
							a.fireEvent("beforegetcontent");
							var s = UE.htmlparser(a.body.innerHTML, r);
							return a.filterOutputRule(s), a.fireEvent("aftergetcontent", s), s.toHtml(o)
						},
						getAllHtml: function() {
							var e = this,
								t = [];
							if(e.fireEvent("getAllHtml", t), n.ie && n.version > 8) {
								var o = "";
								i.each(e.document.styleSheets, function(e) {
									o += e.href ? '<link rel="stylesheet" type="text/css" href="' + e.href + '" />' : "<style>" + e.cssText + "</style>"
								}), i.each(e.document.getElementsByTagName("script"), function(e) {
									o += e.outerHTML
								})
							}
							return "<html><head>" + (e.options.charset ? '<meta http-equiv="Content-Type" content="text/html; charset=' + e.options.charset + '"/>' : "") + (o || e.document.getElementsByTagName("head")[0].innerHTML) + t.join("\n") + "</head><body " + (r && n.version < 9 ? 'class="view"' : "") + ">" + e.getContent(null, null, !0) + "</body></html>"
						},
						getPlainTxt: function() {
							var e = new RegExp(d.fillChar, "g"),
								t = this.body.innerHTML.replace(/[\n\r]/g, "");
							return t = t.replace(/<(p|div)[^>]*>(<br\/?>|&nbsp;)<\/\1>/gi, "\n").replace(/<br\/?>/gi, "\n").replace(/<[^>/]+>/g, "").replace(/(\n)?<\/([^>]+)>/g, function(e, t, n) {
								return a.$block[n] ? "\n" : t ? t : ""
							}), t.replace(e, "").replace(/\u00a0/g, " ").replace(/&nbsp;/g, " ")
						},
						getContentTxt: function() {
							var e = new RegExp(d.fillChar, "g");
							return this.body[n.ie ? "innerText" : "textContent"].replace(e, "").replace(/\u00a0/g, " ")
						},
						setContent: function(t, r, i) {
							function o(e) {
								return "DIV" == e.tagName && e.getAttribute("cdata_tag")
							}
							var s = this;
							s.fireEvent("beforesetcontent", t);
							var l = UE.htmlparser(t);
							if(s.filterInputRule(l), t = l.toHtml(), s.body.innerHTML = (r ? s.body.innerHTML : "") + t, "p" == s.options.enterTag) {
								var c, u = this.body.firstChild;
								if(!u || 1 == u.nodeType && (a.$cdata[u.tagName] || o(u) || d.isCustomeNode(u)) && u === this.body.lastChild) this.body.innerHTML = "<p>" + (n.ie ? "&nbsp;" : "<br/>") + "</p>" + this.body.innerHTML;
								else
									for(var f = s.document.createElement("p"); u;) {
										for(; u && (3 == u.nodeType || 1 == u.nodeType && a.p[u.tagName] && !a.$cdata[u.tagName]);) c = u.nextSibling, f.appendChild(u), u = c;
										if(f.firstChild) {
											if(!u) {
												s.body.appendChild(f);
												break
											}
											u.parentNode.insertBefore(f, u), f = s.document.createElement("p")
										}
										u = u.nextSibling
									}
							}
							s.fireEvent("aftersetcontent"), s.fireEvent("contentchange"), !i && s._selectionChange(), s._bakRange = s._bakIERange = s._bakNativeRange = null;
							var h;
							n.gecko && (h = this.selection.getNative()) && h.removeAllRanges(), s.options.autoSyncData && s.form && e(s.form, s)
						},
						focus: function(e) {
							try {
								var t = this,
									n = t.selection.getRange();
								e ? n.setStartAtLast(t.body.lastChild).setCursor(!1, !0) : n.select(!0), this.fireEvent("focus")
							} catch(r) {}
						},
						_initEvents: function() {
							var e = this,
								t = e.body;
							e._proxyDomEvent = i.bind(e._proxyDomEvent, e), d.on(t, ["click", "contextmenu", "mousedown", "keydown", "keyup", "keypress", "mouseup", "mouseover", "mouseout", "selectstart"], e._proxyDomEvent), d.on(t, ["focus", "blur"], e._proxyDomEvent), d.on(t, ["mouseup", "keydown"], function(t) {
								"keydown" == t.type && (t.ctrlKey || t.metaKey || t.shiftKey || t.altKey) || 2 != t.button && e._selectionChange(250, t)
							})
						},
						_proxyDomEvent: function(e) {
							return this.fireEvent(e.type.replace(/^on/, ""), e)
						},
						_selectionChange: function(e, t) {
							var r, i, o = this,
								a = !1;
							if(n.ie && n.version < 9 && t && "mouseup" == t.type) {
								var s = this.selection.getRange();
								s.collapsed || (a = !0, r = t.clientX, i = t.clientY)
							}
							clearTimeout(c), c = setTimeout(function() {
								if(o.selection.getNative()) {
									var e;
									if(a && "None" == o.selection.getNative().type) {
										e = o.document.body.createTextRange();
										try {
											e.moveToPoint(r, i)
										} catch(n) {
											e = null
										}
									}
									var s;
									e && (s = o.selection.getIERange, o.selection.getIERange = function() {
										return e
									}), o.selection.cache(), s && (o.selection.getIERange = s), o.selection._cachedRange && o.selection._cachedStartElement && (o.fireEvent("beforeselectionchange"), o.fireEvent("selectionchange", !!t), o.fireEvent("afterselectionchange"), o.selection.clear())
								}
							}, e || 50)
						},
						_callCmdFn: function(e, t) {
							t = Array.prototype.slice.call(t, 0);
							var n, r, i = t.shift().toLowerCase();
							return n = this.commands[i] || UE.commands[i], r = n && n[e], n && r || "queryCommandState" != e ? r ? r.apply(this, [i].concat(t)) : void 0 : 0
						},
						execCommand: function(e) {
							this.selection.hasNativeRange() || this.focus(!0), e = e.toLowerCase();
							var t, n = this,
								r = n.commands[e] || UE.commands[e];
							return r && r.execCommand ? (r.notNeedUndo || n.__hasEnterExecCommand ? (t = this._callCmdFn("execCommand", arguments), !n.__hasEnterExecCommand && !r.ignoreContentChange && !n._ignoreContentChange && n.fireEvent("contentchange")) : (n.__hasEnterExecCommand = !0, -1 != n.queryCommandState.apply(n, arguments) && (n.fireEvent("saveScene"), n.fireEvent("beforeexeccommand", e), t = this._callCmdFn("execCommand", arguments), !r.ignoreContentChange && !n._ignoreContentChange && n.fireEvent("contentchange"), n.fireEvent("afterexeccommand", e), n.fireEvent("saveScene")), n.__hasEnterExecCommand = !1), !n.__hasEnterExecCommand && !r.ignoreContentChange && !n._ignoreContentChange && n._selectionChange(), t) : null
						},
						queryCommandState: function() {
							return this._callCmdFn("queryCommandState", arguments)
						},
						queryCommandValue: function() {
							return this._callCmdFn("queryCommandValue", arguments)
						},
						hasContents: function(e) {
							if(e)
								for(var t, n = 0; t = e[n++];)
									if(this.body.getElementsByTagName(t).length > 0) return !0;
							if(!d.isEmptyBlock(this.body)) return !0;
							for(e = ["div"], n = 0; t = e[n++];)
								for(var r, i = d.getElementsByTagName(this.body, t), o = 0; r = i[o++];)
									if(d.isCustomeNode(r)) return !0;
							return !1
						},
						reset: function() {
							this.fireEvent("reset")
						},
						setEnabled: function() {
							var e, t = this;
							if("false" == t.body.contentEditable) {
								t.body.contentEditable = !0, e = t.selection.getRange();
								try {
									e.moveToBookmark(t.lastBk), delete t.lastBk
								} catch(n) {
									e.setStartAtFirst(t.body).collapse(!0)
								}
								e.select(!0), t.bkqueryCommandState && (t.queryCommandState = t.bkqueryCommandState, delete t.bkqueryCommandState), t.fireEvent("selectionchange")
							}
						},
						enable: function() {
							return this.setEnabled()
						},
						setDisabled: function(e) {
							var t = this;
							e = e ? i.isArray(e) ? e : [e] : [], "true" == t.body.contentEditable && (t.lastBk || (t.lastBk = t.selection.getRange().createBookmark(!0)), t.body.contentEditable = !1, t.bkqueryCommandState = t.queryCommandState, t.queryCommandState = function(n) {
								return -1 != i.indexOf(e, n) ? t.bkqueryCommandState.apply(t, arguments) : -1
							}, t.fireEvent("selectionchange"))
						},
						disable: function(e) {
							return this.setDisabled(e)
						},
						_setDefaultContent: function() {
							function e() {
								var t = this;
								t.document.getElementById("initContent") && (t.body.innerHTML = "<p>" + (r ? "" : "<br/>") + "</p>", t.removeListener("firstBeforeExecCommand focus", e), setTimeout(function() {
									t.focus(), t._selectionChange()
								}, 0))
							}
							return function(t) {
								var n = this;
								n.body.innerHTML = '<p id="initContent">' + t + "</p>", n.addListener("firstBeforeExecCommand focus", e)
							}
						}(),
						setShow: function() {
							var e = this,
								t = e.selection.getRange();
							if("none" == e.container.style.display) {
								try {
									t.moveToBookmark(e.lastBk), delete e.lastBk
								} catch(n) {
									t.setStartAtFirst(e.body).collapse(!0)
								}
								setTimeout(function() {
									t.select(!0)
								}, 100), e.container.style.display = ""
							}
						},
						show: function() {
							return this.setShow()
						},
						setHide: function() {
							var e = this;
							e.lastBk || (e.lastBk = e.selection.getRange().createBookmark(!0)), e.container.style.display = "none"
						},
						hide: function() {
							return this.setHide()
						},
						getLang: function(e) {
							var t = UE.I18N[this.options.lang];
							if(!t) throw Error("not import language file");
							e = (e || "").split(".");
							for(var n, r = 0;
								(n = e[r++]) && (t = t[n]););
							return t
						},
						getContentLength: function(e, t) {
							var n = this.getContent(!1, !1, !0).length;
							if(e) {
								t = (t || []).concat(["hr", "img", "iframe"]), n = this.getContentTxt().replace(/[\t\r\n]+/g, "").length;
								for(var r, i = 0; r = t[i++];) n += this.body.getElementsByTagName(r).length
							}
							return n
						},
						addInputRule: function(e, t) {
							e.ignoreUndo = t, this.inputRules.push(e)
						},
						filterInputRule: function(e, t) {
							for(var n, r = 0; n = this.inputRules[r++];) t && n.ignoreUndo || n.call(this, e)
						},
						addOutputRule: function(e, t) {
							e.ignoreUndo = t, this.outputRules.push(e)
						},
						filterOutputRule: function(e, t) {
							for(var n, r = 0; n = this.outputRules[r++];) t && n.ignoreUndo || n.call(this, e)
						}
					}, i.inherits(f, o)
				}(), UE.filterWord = function() {
						function e(e) {
							return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<v:)/gi.test(e)
						}

						function t(e) {
							return e = e.replace(/[\d.]+\w+/g, function(e) {
								return i.transUnitToPx(e)
							})
						}

						function r(e) {
							return e.replace(/[\t\r\n]+/g, "").replace(/<!--[\s\S]*?-->/gi, "").replace(/<v:shape [^>]*>[\s\S]*?.<\/v:shape>/gi, function(e) {
								if(n.opera) return "";
								try {
									var r = e.match(/width:([ \d.]*p[tx])/i)[1],
										i = e.match(/height:([ \d.]*p[tx])/i)[1],
										o = e.match(/src=\s*"([^"]*)"/i)[1];
									return '<img width="' + t(r) + '" height="' + t(i) + '" src="' + o + '" />'
								} catch(a) {
									return ""
								}
							}).replace(/<\/?div[^>]*>/g, "").replace(/v:\w+=(["']?)[^'"]+\1/g, "").replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, "").replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>").replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi, function(e, t, n, r) {
								return "class" == t && "MsoListParagraph" == r ? e : ""
							}).replace(/<(font|span)[^>]*>\s*<\/\1>/gi, "").replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, function(e, n, r, i) {
								for(var o, a = [], s = i.replace(/^\s+|\s+$/, "").replace(/&#39;/g, "'").replace(/&quot;/gi, "'").split(/;\s*/g), l = 0; o = s[l]; l++) {
									var d, c, u = o.split(":");
									if(2 == u.length) {
										if(d = u[0].toLowerCase(), c = u[1].toLowerCase(), /^(background)\w*/.test(d) && 0 == c.replace(/(initial|\s)/g, "").length || /^(margin)\w*/.test(d) && /^0\w+$/.test(c)) continue;
										switch(d) {
											case "mso-padding-alt":
											case "mso-padding-top-alt":
											case "mso-padding-right-alt":
											case "mso-padding-bottom-alt":
											case "mso-padding-left-alt":
											case "mso-margin-alt":
											case "mso-margin-top-alt":
											case "mso-margin-right-alt":
											case "mso-margin-bottom-alt":
											case "mso-margin-left-alt":
											case "mso-height":
											case "mso-width":
											case "mso-vertical-align-alt":
												/<table/.test(n) || (a[l] = d.replace(/^mso-|-alt$/g, "") + ":" + t(c));
												continue;
											case "horiz-align":
												a[l] = "text-align:" + c;
												continue;
											case "vert-align":
												a[l] = "vertical-align:" + c;
												continue;
											case "font-color":
											case "mso-foreground":
												a[l] = "color:" + c;
												continue;
											case "mso-background":
											case "mso-highlight":
												a[l] = "background:" + c;
												continue;
											case "mso-default-height":
												a[l] = "min-height:" + t(c);
												continue;
											case "mso-default-width":
												a[l] = "min-width:" + t(c);
												continue;
											case "mso-padding-between-alt":
												a[l] = "border-collapse:separate;border-spacing:" + t(c);
												continue;
											case "text-line-through":
												("single" == c || "double" == c) && (a[l] = "text-decoration:line-through");
												continue;
											case "mso-zero-height":
												"yes" == c && (a[l] = "display:none");
												continue;
											case "background":
												break;
											case "margin":
												if(!/[1-9]/.test(c)) continue
										}
										if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?:decor|trans)|top-bar|version|vnd|word-break)/.test(d) || /text\-indent|padding|margin/.test(d) && /\-[\d.]+/.test(c)) continue;
										a[l] = d + ":" + u[1]
									}
								}
								return n + (a.length ? ' style="' + a.join(";").replace(/;{2,}/g, ";") + '"' : "")
							}).replace(/[\d.]+(cm|pt)/g, function(e) {
								return i.transUnitToPx(e)
							})
						}
						return function(t) {
							return e(t) ? r(t) : t
						}
					}(), ! function() {
						function e(e, t, n) {
							return e.push(h), t + (n ? 1 : -1)
						}

						function t(e, t) {
							for(var n = 0; t > n; n++) e.push(f)
						}

						function n(i, l, d, c) {
							switch(i.type) {
								case "root":
									for(var u, f = 0; u = i.children[f++];) d && "element" == u.type && !a.$inlineWithA[u.tagName] && f > 1 && (e(l, c, !0), t(l, c)), n(u, l, d, c);
									break;
								case "text":
									r(i, l);
									break;
								case "element":
									o(i, l, d, c);
									break;
								case "comment":
									s(i, l, d)
							}
							return l
						}

						function r(e, t) {
							t.push("pre" == e.parentNode.tagName ? e.data : e.data.replace(/[ ]{2}/g, " &nbsp;"))
						}

						function o(r, i, o, s) {
							var l = "";
							if(r.attrs) {
								l = [];
								var d = r.attrs;
								for(var c in d) l.push(c + (void 0 !== d[c] ? '="' + d[c] + '"' : ""));
								l = l.join(" ")
							}
							if(i.push("<" + r.tagName + (l ? " " + l : "") + (a.$empty[r.tagName] ? "/" : "") + ">"), o && !a.$inlineWithA[r.tagName] && "pre" != r.tagName && r.children && r.children.length && (s = e(i, s, !0), t(i, s)), r.children && r.children.length)
								for(var u, f = 0; u = r.children[f++];) o && "element" == u.type && !a.$inlineWithA[u.tagName] && f > 1 && (e(i, s), t(i, s)), n(u, i, o, s);
							a.$empty[r.tagName] || (o && !a.$inlineWithA[r.tagName] && "pre" != r.tagName && r.children && r.children.length && (s = e(i, s), t(i, s)), i.push("</" + r.tagName + ">"))
						}

						function s(e, t) {
							t.push("<!--" + e.data + "-->")
						}

						function l(e, t) {
							var n;
							if("element" == e.type && e.getAttr("id") == t) return e;
							if(e.children && e.children.length)
								for(var r, i = 0; r = e.children[i++];)
									if(n = l(r, t)) return n
						}

						function d(e, t, n) {
							if("element" == e.type && e.tagName == t && n.push(e), e.children && e.children.length)
								for(var r, i = 0; r = e.children[i++];) d(r, t, n)
						}

						function c(e, t) {
							if(e.children && e.children.length)
								for(var n, r = 0; n = e.children[r];) c(n, t), n.parentNode && (n.children && n.children.length && t(n), n.parentNode && r++);
							else t(e)
						}
						var u = UE.uNode = function(e) {
								this.type = e.type, this.data = e.data, this.tagName = e.tagName, this.parentNode = e.parentNode, this.attrs = e.attrs || {}, this.children = e.children
							},
							f = "    ",
							h = "\n";
						u.createElement = function(e) {
							return /[<>]/.test(e) ? UE.htmlparser(e).children[0] : new u({
								type: "element",
								children: [],
								tagName: e
							})
						}, u.createText = function(e, t) {
							return new UE.uNode({
								type: "text",
								data: t ? e : i.unhtml(e || "")
							})
						}, u.prototype = {
							toHtml: function(e) {
								var t = [];
								return n(this, t, e, 0), t.join("")
							},
							innerHTML: function(e) {
								if("element" != this.type || a.$empty[this.tagName]) return this;
								if(i.isString(e)) {
									if(this.children)
										for(var t, n = 0; t = this.children[n++];) t.parentNode = null;
									this.children = [];
									for(var t, r = UE.htmlparser(e), n = 0; t = r.children[n++];) this.children.push(t), t.parentNode = this;
									return this
								}
								var r = new UE.uNode({
									type: "root",
									children: this.children
								});
								return r.toHtml()
							},
							innerText: function(e, t) {
								if("element" != this.type || a.$empty[this.tagName]) return this;
								if(e) {
									if(this.children)
										for(var n, r = 0; n = this.children[r++];) n.parentNode = null;
									return this.children = [], this.appendChild(u.createText(e, t)), this
								}
								return this.toHtml().replace(/<[^>]+>/g, "")
							},
							getData: function() {
								return "element" == this.type ? "" : this.data
							},
							firstChild: function() {
								return this.children ? this.children[0] : null
							},
							lastChild: function() {
								return this.children ? this.children[this.children.length - 1] : null
							},
							previousSibling: function() {
								for(var e, t = this.parentNode, n = 0; e = t.children[n]; n++)
									if(e === this) return 0 == n ? null : t.children[n - 1]
							},
							nextSibling: function() {
								for(var e, t = this.parentNode, n = 0; e = t.children[n++];)
									if(e === this) return t.children[n]
							},
							replaceChild: function(e, t) {
								if(this.children) {
									e.parentNode && e.parentNode.removeChild(e);
									for(var n, r = 0; n = this.children[r]; r++)
										if(n === t) return this.children.splice(r, 1, e), t.parentNode = null, e.parentNode = this, e
								}
							},
							appendChild: function(e) {
								if("root" == this.type || "element" == this.type && !a.$empty[this.tagName]) {
									this.children || (this.children = []), e.parentNode && e.parentNode.removeChild(e);
									for(var t, n = 0; t = this.children[n]; n++)
										if(t === e) {
											this.children.splice(n, 1);
											break
										}
									return this.children.push(e), e.parentNode = this, e
								}
							},
							insertBefore: function(e, t) {
								if(this.children) {
									e.parentNode && e.parentNode.removeChild(e);
									for(var n, r = 0; n = this.children[r]; r++)
										if(n === t) return this.children.splice(r, 0, e), e.parentNode = this, e
								}
							},
							insertAfter: function(e, t) {
								if(this.children) {
									e.parentNode && e.parentNode.removeChild(e);
									for(var n, r = 0; n = this.children[r]; r++)
										if(n === t) return this.children.splice(r + 1, 0, e), e.parentNode = this, e
								}
							},
							removeChild: function(e, t) {
								if(this.children)
									for(var n, r = 0; n = this.children[r]; r++)
										if(n === e) {
											if(this.children.splice(r, 1), n.parentNode = null, t && n.children && n.children.length)
												for(var i, o = 0; i = n.children[o]; o++) this.children.splice(r + o, 0, i), i.parentNode = this;
											return n
										}
							},
							getAttr: function(e) {
								return this.attrs && this.attrs[e.toLowerCase()]
							},
							setAttr: function(e, t) {
								if(!e) return delete this.attrs, void 0;
								if(this.attrs || (this.attrs = {}), i.isObject(e))
									for(var n in e) e[n] ? this.attrs[n.toLowerCase()] = e[n] : delete this.attrs[n];
								else t ? this.attrs[e.toLowerCase()] = t : delete this.attrs[e]
							},
							getIndex: function() {
								for(var e, t = this.parentNode, n = 0; e = t.children[n]; n++)
									if(e === this) return n;
								return -1
							},
							getNodeById: function(e) {
								var t;
								if(this.children && this.children.length)
									for(var n, r = 0; n = this.children[r++];)
										if(t = l(n, e)) return t
							},
							getNodesByTagName: function(e) {
								e = i.trim(e).replace(/[ ]{2,}/g, " ").split(" ");
								var t = [],
									n = this;
								return i.each(e, function(e) {
									if(n.children && n.children.length)
										for(var r, i = 0; r = n.children[i++];) d(r, e, t)
								}), t
							},
							getStyle: function(e) {
								var t = this.getAttr("style");
								if(!t) return "";
								var n = new RegExp("(^|;)\\s*" + e + ":([^;]+)", "i"),
									r = t.match(n);
								return r && r[0] ? r[2] : ""
							},
							setStyle: function(e, t) {
								function n(e, t) {
									var n = new RegExp("(^|;)\\s*" + e + ":([^;]+;?)", "gi");
									r = r.replace(n, "$1"), t && (r = e + ":" + i.unhtml(t) + ";" + r)
								}
								var r = this.getAttr("style");
								if(r || (r = ""), i.isObject(e))
									for(var o in e) n(o, e[o]);
								else n(e, t);
								this.setAttr("style", i.trim(r))
							},
							traversal: function(e) {
								return this.children && this.children.length && c(this, e), this
							}
						}
					}(), UE.htmlparser = function(e, t) {
						function n(e, t) {
							if(p[e.tagName]) {
								var n = f.createElement(p[e.tagName]);
								e.appendChild(n), n.appendChild(f.createText(t)), e = n
							} else e.appendChild(f.createText(t))
						}

						function r(e, t, n) {
							var o;
							if(o = h[t]) {
								for(var s, d = e;
									"root" != d.type;) {
									if(i.isArray(o) ? -1 != i.indexOf(o, d.tagName) : o == d.tagName) {
										e = d, s = !0;
										break
									}
									d = d.parentNode
								}
								s || (e = r(e, i.isArray(o) ? o[0] : o))
							}
							var c = new f({
								parentNode: e,
								type: "element",
								tagName: t.toLowerCase(),
								children: a.$empty[t] ? null : []
							});
							if(n) {
								for(var u, p = {}; u = l.exec(n);) p[u[1].toLowerCase()] = i.unhtml(u[2] || u[3] || u[4]);
								c.attrs = p
							}
							return e.children.push(c), a.$empty[t] ? e : c
						}

						function o(e, t) {
							e.children.push(new f({
								type: "comment",
								data: t,
								parentNode: e
							}))
						}
						var s = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g,
							l = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,
							c = {
								b: 1,
								code: 1,
								i: 1,
								u: 1,
								strike: 1,
								s: 1,
								tt: 1,
								strong: 1,
								q: 1,
								samp: 1,
								em: 1,
								span: 1,
								sub: 1,
								img: 1,
								sup: 1,
								font: 1,
								big: 1,
								small: 1,
								iframe: 1,
								a: 1,
								br: 1,
								pre: 1
							};
						e = e.replace(new RegExp(d.fillChar, "g"), ""), t || (e = e.replace(new RegExp("[\\r\\t\\n" + (t ? "" : " ") + "]*</?(\\w+)\\s*(?:[^>]*)>[\\r\\t\\n" + (t ? "" : " ") + "]*", "g"), function(e, n) {
							return n && c[n.toLowerCase()] ? e.replace(/(^[\n\r]+)|([\n\r]+$)/g, "") : e.replace(new RegExp("^[\\r\\n" + (t ? "" : " ") + "]+"), "").replace(new RegExp("[\\r\\n" + (t ? "" : " ") + "]+$"), "")
						}));
						for(var u, f = UE.uNode, h = {
								td: "tr",
								tr: ["tbody", "thead", "tfoot"],
								tbody: "table",
								th: "tr",
								thead: "table",
								tfoot: "table",
								caption: "table",
								li: ["ul", "ol"],
								dt: "dl",
								dd: "dl",
								option: "select"
							}, p = {
								ol: "li",
								ul: "li"
							}, m = 0, g = 0, v = new f({
								type: "root",
								children: []
							}), y = v; u = s.exec(e);) {
							m = u.index;
							try {
								if(m > g && n(y, e.slice(g, m)), u[3]) a.$cdata[y.tagName] ? n(y, u[0]) : y = r(y, u[3].toLowerCase(), u[4]);
								else if(u[1]) {
									if("root" != y.type)
										if(a.$cdata[y.tagName] && !a.$cdata[u[1]]) n(y, u[0]);
										else {
											for(var b = y;
												"element" == y.type && y.tagName != u[1].toLowerCase();)
												if(y = y.parentNode, "root" == y.type) throw y = b, "break";
											y = y.parentNode
										}
								} else u[2] && o(y, u[2])
							} catch(C) {}
							g = s.lastIndex
						}
						return g < e.length && n(y, e.slice(g)), v
					}, UE.filterNode = function() {
						function e(t, n) {
							switch(t.type) {
								case "text":
									break;
								case "element":
									var r;
									if(r = n[t.tagName])
										if("-" === r) t.parentNode.removeChild(t);
										else if(i.isFunction(r)) {
										var o = t.parentNode,
											s = t.getIndex();
										if(r(t), t.parentNode) {
											if(t.children)
												for(var l, d = 0; l = t.children[d];) e(l, n), l.parentNode && d++
										} else
											for(var l, d = s; l = o.children[d];) e(l, n), l.parentNode && d++
									} else {
										var c = r.$;
										if(c && t.attrs) {
											var u, f = {};
											for(var h in c) {
												if(u = t.getAttr(h), "style" == h && i.isArray(c[h])) {
													var p = [];
													i.each(c[h], function(e) {
														var n;
														(n = t.getStyle(e)) && p.push(e + ":" + n)
													}), u = p.join(";")
												}
												u && (f[h] = u)
											}
											t.attrs = f
										}
										if(t.children)
											for(var l, d = 0; l = t.children[d];) e(l, n), l.parentNode && d++
									} else if(a.$cdata[t.tagName]) t.parentNode.removeChild(t);
									else {
										var o = t.parentNode,
											s = t.getIndex();
										t.parentNode.removeChild(t, !0);
										for(var l, d = s; l = o.children[d];) e(l, n), l.parentNode && d++
									}
									break;
								case "comment":
									t.parentNode.removeChild(t)
							}
						}
						return function(t, n) {
							if(i.isEmptyObject(n)) return t;
							var r;
							(r = n["-"]) && i.each(r.split(" "), function(e) {
								n[e] = "-"
							});
							for(var o, a = 0; o = t.children[a];) e(o, n), o.parentNode && a++;
							return t
						}
					}(), UE.commands.inserthtml = {
						execCommand: function(e, t, r) {
							var o, s, l = this;
							if(t && l.fireEvent("beforeinserthtml", t) !== !0) {
								if(o = l.selection.getRange(), s = o.document.createElement("div"), s.style.display = "inline", !r) {
									var u = UE.htmlparser(t);
									l.options.filterRules && UE.filterNode(u, l.options.filterRules), l.filterInputRule(u), t = u.toHtml()
								}
								if(s.innerHTML = i.trim(t), !o.collapsed) {
									var f = o.startContainer;
									if(d.isFillChar(f) && o.setStartBefore(f), f = o.endContainer, d.isFillChar(f) && o.setEndAfter(f), o.txtToElmBoundary(), o.endContainer && 1 == o.endContainer.nodeType && (f = o.endContainer.childNodes[o.endOffset], f && d.isBr(f) && o.setEndAfter(f)), 0 == o.startOffset && (f = o.startContainer, d.isBoundaryNode(f, "firstChild") && (f = o.endContainer, o.endOffset == (3 == f.nodeType ? f.nodeValue.length : f.childNodes.length) && d.isBoundaryNode(f, "lastChild") && (l.body.innerHTML = "<p>" + (n.ie ? "" : "<br/>") + "</p>", o.setStart(l.body.firstChild, 0).collapse(!0)))), !o.collapsed && o.deleteContents(), 1 == o.startContainer.nodeType) {
										var h, p = o.startContainer.childNodes[o.startOffset];
										if(p && d.isBlockElm(p) && (h = p.previousSibling) && d.isBlockElm(h)) {
											for(o.setEnd(h, h.childNodes.length).collapse(); p.firstChild;) h.appendChild(p.firstChild);
											d.remove(p)
										}
									}
								}
								var p, m, h, g, v, y = 0;
								for(o.inFillChar() && (p = o.startContainer, d.isFillChar(p) ? (o.setStartBefore(p).collapse(!0), d.remove(p)) : d.isFillChar(p, !0) && (p.nodeValue = p.nodeValue.replace(c, ""), o.startOffset--, o.collapsed && o.collapse(!0))); p = s.firstChild;) {
									if(y) {
										for(var b = l.document.createElement("p"); p && (3 == p.nodeType || !a.$block[p.tagName]);) v = p.nextSibling, b.appendChild(p), p = v;
										b.firstChild && (p = b)
									}
									if(o.insertNode(p), v = p.nextSibling, !y && p.nodeType == d.NODE_ELEMENT && d.isBlockElm(p) && (m = d.findParent(p, function(e) {
											return d.isBlockElm(e)
										}), m && "body" != m.tagName.toLowerCase() && (!a[m.tagName][p.nodeName] || p.parentNode !== m))) {
										if(a[m.tagName][p.nodeName])
											for(g = p.parentNode; g !== m;) h = g, g = g.parentNode;
										else h = m;
										d.breakParent(p, h || g);
										var h = p.previousSibling;
										d.trimWhiteTextNode(h), h.childNodes.length || d.remove(h), !n.ie && (C = p.nextSibling) && d.isBlockElm(C) && C.lastChild && !d.isBr(C.lastChild) && C.appendChild(l.document.createElement("br")), y = 1
									}
									var C = p.nextSibling;
									if(!s.firstChild && C && d.isBlockElm(C)) {
										o.setStart(C, 0).collapse(!0);
										break
									}
									o.setEndAfter(p).collapse()
								}
								if(p = o.startContainer, v && d.isBr(v) && d.remove(v), d.isBlockElm(p) && d.isEmptyNode(p))
									if(v = p.nextSibling) d.remove(p), 1 == v.nodeType && a.$block[v.tagName] && o.setStart(v, 0).collapse(!0).shrinkBoundary();
									else try {
										p.innerHTML = n.ie ? d.fillChar : "<br/>"
									} catch(E) {
										o.setStartBefore(p), d.remove(p)
									}
								try {
									if(n.ie9below && 1 == o.startContainer.nodeType && !o.startContainer.childNodes[o.startOffset]) {
										var N = o.startContainer,
											h = N.childNodes[o.startOffset - 1];
										if(h && 1 == h.nodeType && a.$empty[h.tagName]) {
											var x = this.document.createTextNode(d.fillChar);
											o.insertNode(x).setStart(x, 0).collapse(!0)
										}
									}
									o.select(!0)
								} catch(E) {}
								setTimeout(function() {
									o = l.selection.getRange(), o.scrollIntoView(), l.fireEvent("afterinserthtml")
								}, 200)
							}
						}
					}, UE.plugins.undo = function() {
						function e(e, t) {
							if(e.length != t.length) return 0;
							for(var n = 0, r = e.length; r > n; n++)
								if(e[n] != t[n]) return 0;
							return 1
						}

						function r(t, n) {
							return t.collapsed != n.collapsed ? 0 : e(t.startAddress, n.startAddress) && e(t.endAddress, n.endAddress) ? 1 : 0
						}

						function o() {
							this.list = [], this.index = 0, this.hasUndo = !1, this.hasRedo = !1, this.undo = function() {
								if(this.hasUndo) {
									if(!this.list[this.index - 1] && 1 == this.list.length) return this.reset(), void 0;
									for(; this.list[this.index].content == this.list[this.index - 1].content;)
										if(this.index--, 0 == this.index) return this.restore(0);
									this.restore(--this.index)
								}
							}, this.redo = function() {
								if(this.hasRedo) {
									for(; this.list[this.index].content == this.list[this.index + 1].content;)
										if(this.index++, this.index == this.list.length - 1) return this.restore(this.index);
									this.restore(++this.index)
								}
							}, this.restore = function() {
								var e = this.editor,
									r = this.list[this.index],
									o = UE.htmlparser(r.content.replace(h, ""));
								e.options.autoClearEmptyNode = !1, e.filterInputRule(o, !0), e.options.autoClearEmptyNode = m, e.body.innerHTML = o.toHtml(), e.fireEvent("afterscencerestore"), n.ie && i.each(d.getElementsByTagName(e.document, "td th caption p"), function(t) {
									d.isEmptyNode(t) && d.fillNode(e.document, t)
								});
								try {
									var s = new t.Range(e.document, e.body).moveToAddress(r.address);
									if(n.ie && s.collapsed && 1 == s.startContainer.nodeType) {
										var l = s.startContainer.childNodes[s.startOffset];
										(!l || 1 == l.nodeType && a.$empty[l]) && s.insertNode(e.document.createTextNode(" ")).collapse(!0)
									}
									s.select(p[s.startContainer.nodeName.toLowerCase()])
								} catch(c) {}
								this.update(), this.clearKey(), e.fireEvent("reset", !0)
							}, this.getScene = function() {
								var e = this.editor,
									t = e.selection.getRange(),
									r = t.createAddress(!1, !0);
								e.fireEvent("beforegetscene");
								var i = UE.htmlparser(e.body.innerHTML, !0);
								e.options.autoClearEmptyNode = !1, e.filterOutputRule(i, !0), e.options.autoClearEmptyNode = m;
								var o = i.toHtml();
								return n.ie && (o = o.replace(/>&nbsp;</g, "><").replace(/\s*</g, "<").replace(/>\s*/g, ">")), e.fireEvent("aftergetscene"), {
									address: r,
									content: o
								}
							}, this.save = function(e, t) {
								clearTimeout(l);
								var n = this.getScene(t),
									i = this.list[this.index];
								i && i.content == n.content && (e ? 1 : r(i.address, n.address)) || (this.list = this.list.slice(0, this.index + 1), this.list.push(n), this.list.length > u && this.list.shift(), this.index = this.list.length - 1, this.clearKey(), this.update())
							}, this.update = function() {
								this.hasRedo = !!this.list[this.index + 1], this.hasUndo = !!this.list[this.index - 1]
							}, this.reset = function() {
								this.list = [], this.index = 0, this.hasUndo = !1, this.hasRedo = !1, this.clearKey()
							}, this.clearKey = function() {
								y = 0, g = null
							}
						}

						function s() {
							this.undoManger.save()
						}
						var l, c = this,
							u = c.options.maxUndoCount || 20,
							f = c.options.maxInputCount || 20,
							h = new RegExp(d.fillChar + "|</hr>", "gi"),
							p = {
								ol: 1,
								ul: 1,
								table: 1,
								tbody: 1,
								tr: 1,
								body: 1
							},
							m = c.options.autoClearEmptyNode;
						c.undoManger = new o, c.undoManger.editor = c, c.addListener("saveScene", function() {
							var e = Array.prototype.splice.call(arguments, 1);
							this.undoManger.save.apply(this.undoManger, e)
						}), c.addListener("beforeexeccommand", s), c.addListener("afterexeccommand", s), c.addListener("reset", function(e, t) {
							t || this.undoManger.reset()
						}), c.commands.redo = c.commands.undo = {
							execCommand: function(e) {
								this.undoManger[e]()
							},
							queryCommandState: function(e) {
								return this.undoManger["has" + ("undo" == e.toLowerCase() ? "Undo" : "Redo")] ? 0 : -1
							},
							notNeedUndo: 1
						};
						var g, v = {
								16: 1,
								17: 1,
								18: 1,
								37: 1,
								38: 1,
								39: 1,
								40: 1
							},
							y = 0,
							b = !1;
						c.addListener("ready", function() {
							d.on(this.body, "compositionstart", function() {
								b = !0
							}), d.on(this.body, "compositionend", function() {
								b = !1
							})
						}), c.addshortcutkey({
							Undo: "ctrl+90",
							Redo: "ctrl+89,shift+ctrl+z"
						});
						var C = !0;
						c.addListener("keydown", function(e, t) {
							function n(e) {
								e.selection.getRange().collapsed && e.fireEvent("contentchange"), e.undoManger.save(!1, !0), e.fireEvent("selectionchange")
							}
							var r = this,
								i = t.keyCode || t.which;
							if(!(v[i] || t.ctrlKey || t.metaKey || t.shiftKey || t.altKey)) {
								if(b) return;
								if(!r.selection.getRange().collapsed) return r.undoManger.save(!1, !0), C = !1, void 0;
								0 == r.undoManger.list.length && r.undoManger.save(!0), clearTimeout(l), l = setTimeout(function() {
									if(b) var e = setInterval(function() {
										b || (n(r), clearInterval(e))
									}, 300);
									else n(r)
								}, 200), g = i, y++, y >= f && n(r)
							}
						}), c.addListener("keyup", function(e, t) {
							var n = t.keyCode || t.which;
							if(!(v[n] || t.ctrlKey || t.metaKey || t.shiftKey || t.altKey)) {
								if(b) return;
								C || (this.undoManger.save(!1, !0), C = !0)
							}
						})
					}, UE.plugins.paste = function() {
						function e(e) {
							var t = this.document;
							if(!t.getElementById("baidu_pastebin")) {
								var r = this.selection.getRange(),
									i = r.createBookmark(),
									o = t.createElement("div");
								o.id = "baidu_pastebin", n.webkit && o.appendChild(t.createTextNode(d.fillChar + d.fillChar)), this.body.appendChild(o), i.start.style.display = "", o.style.cssText = "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + $(i.start).position().top + "px", r.selectNodeContents(o).select(!0), setTimeout(function() {
									if(n.webkit)
										for(var a, s = 0, l = t.querySelectorAll("#baidu_pastebin"); a = l[s++];) {
											if(!d.isEmptyNode(a)) {
												o = a;
												break
											}
											d.remove(a)
										}
									try {
										o.parentNode.removeChild(o)
									} catch(c) {}
									r.moveToBookmark(i).select(!0), e(o)
								}, 0)
							}
						}

						function t(e) {
							var t;
							if(e.firstChild) {
								for(var o, a = d.getElementsByTagName(e, "span"), s = 0; o = a[s++];)("_baidu_cut_start" == o.id || "_baidu_cut_end" == o.id) && d.remove(o);
								if(n.webkit) {
									for(var l, c = e.querySelectorAll("div br"), s = 0; l = c[s++];) {
										var u = l.parentNode;
										"DIV" == u.tagName && 1 == u.childNodes.length && (u.innerHTML = "<p><br/></p>", d.remove(u))
									}
									for(var f, h = e.querySelectorAll("#baidu_pastebin"), s = 0; f = h[s++];) {
										var p = r.document.createElement("p");
										for(f.parentNode.insertBefore(p, f); f.firstChild;) p.appendChild(f.firstChild);
										d.remove(f)
									}
									for(var m, g = e.querySelectorAll("meta"), s = 0; m = g[s++];) d.remove(m);
									var c = e.querySelectorAll("br");
									for(s = 0; m = c[s++];) /^apple-/i.test(m.className) && d.remove(m)
								}
								if(n.gecko) {
									var v = e.querySelectorAll("[_moz_dirty]");
									for(s = 0; m = v[s++];) m.removeAttribute("_moz_dirty")
								}
								if(!n.ie)
									for(var m, y = e.querySelectorAll("span.Apple-style-span"), s = 0; m = y[s++];) d.remove(m, !0);
								t = e.innerHTML, t = UE.filterWord(t);
								var b = UE.htmlparser(t);
								if(r.options.filterRules && UE.filterNode(b, r.options.filterRules), r.filterInputRule(b), n.webkit) {
									var C = b.lastChild();
									C && "element" == C.type && "br" == C.tagName && b.removeChild(C), i.each(r.body.querySelectorAll("div"), function(e) {
										d.isEmptyBlock(e) && d.remove(e)
									})
								}
								if(t = {
										html: b.toHtml()
									}, r.fireEvent("beforepaste", t, b), !t.html) return;
								r.execCommand("insertHtml", t.html, !0), r.fireEvent("afterpaste", t)
							}
						}
						var r = this;
						r.addListener("ready", function() {
							d.on(r.body, "cut", function() {
								var e = r.selection.getRange();
								!e.collapsed && r.undoManger && r.undoManger.save()
							}), d.on(r.body, n.ie || n.opera ? "keydown" : "paste", function(i) {
								(!n.ie && !n.opera || (i.ctrlKey || i.metaKey) && "86" == i.keyCode) && e.call(r, function(e) {
									t(e)
								})
							})
						})
					}, UE.plugins.enterkey = function() {
						var e, t = this,
							r = t.options.enterTag;
						t.addListener("keyup", function(r, i) {
							var o = i.keyCode || i.which;
							if(13 == o) {
								var a, s = t.selection.getRange(),
									l = s.startContainer;
								if(n.ie) t.fireEvent("saveScene", !0, !0);
								else {
									if(/h\d/i.test(e)) {
										if(n.gecko) {
											var c = d.findParentByTagName(l, ["h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "caption", "table"], !0);
											c || (t.document.execCommand("formatBlock", !1, "<p>"), a = 1)
										} else if(1 == l.nodeType) {
											var u, f = t.document.createTextNode("");
											if(s.insertNode(f), u = d.findParentByTagName(f, "div", !0)) {
												for(var h = t.document.createElement("p"); u.firstChild;) h.appendChild(u.firstChild);
												u.parentNode.insertBefore(h, u), d.remove(u), s.setStartBefore(f).setCursor(), a = 1
											}
											d.remove(f)
										}
										t.undoManger && a && t.undoManger.save()
									}
									n.opera && s.select()
								}
							}
						}), t.addListener("keydown", function(i, o) {
							var a = o.keyCode || o.which;
							if(13 == a) {
								if(t.fireEvent("beforeenterkeydown")) return d.preventDefault(o), void 0;
								t.fireEvent("saveScene", !0, !0), e = "";
								var s = t.selection.getRange();
								if(!s.collapsed) {
									var l = s.startContainer,
										c = s.endContainer,
										u = d.findParentByTagName(l, "td", !0),
										f = d.findParentByTagName(c, "td", !0);
									if(u && f && u !== f || !u && f || u && !f) return o.preventDefault ? o.preventDefault() : o.returnValue = !1, void 0
								}
								"p" == r && (n.ie || (l = d.findParentByTagName(s.startContainer, ["ol", "ul", "p", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "caption"], !0), l || n.opera ? (e = l.tagName, "p" == l.tagName.toLowerCase() && n.gecko && d.removeDirtyAttr(l)) : (t.document.execCommand("formatBlock", !1, "<p>"), n.gecko && (s = t.selection.getRange(), l = d.findParentByTagName(s.startContainer, "p", !0), l && d.removeDirtyAttr(l)))))
							}
						})
					}, UE.plugins.selectall = function() {
						var e = this;
						e.commands.selectall = {
							execCommand: function() {
								var e = this,
									t = e.body,
									r = e.selection.getRange();
								r.selectNodeContents(t), d.isEmptyBlock(t) && (n.opera && t.firstChild && 1 == t.firstChild.nodeType && r.setStartAtFirst(t.firstChild), r.collapse(!0)), r.select(!0)
							},
							notNeedUndo: 1
						}, e.addshortcutkey({
							selectAll: "ctrl+65"
						})
					}, UE.plugins.keystrokes = function() {
						var e = this,
							t = !0;
						e.addListener("keydown", function(r, i) {
							var o = i.keyCode || i.which,
								a = e.selection.getRange();
							if(!a.collapsed && !(i.ctrlKey || i.shiftKey || i.altKey || i.metaKey) && (o >= 65 && 90 >= o || o >= 48 && 57 >= o || o >= 96 && 111 >= o || {
									13: 1,
									8: 1,
									46: 1
								}[o])) {
								var s = a.startContainer;
								if(d.isFillChar(s) && a.setStartBefore(s), s = a.endContainer, d.isFillChar(s) && a.setEndAfter(s), a.txtToElmBoundary(), a.endContainer && 1 == a.endContainer.nodeType && (s = a.endContainer.childNodes[a.endOffset], s && d.isBr(s) && a.setEndAfter(s)), 0 == a.startOffset && (s = a.startContainer, d.isBoundaryNode(s, "firstChild") && (s = a.endContainer, a.endOffset == (3 == s.nodeType ? s.nodeValue.length : s.childNodes.length) && d.isBoundaryNode(s, "lastChild")))) return e.fireEvent("saveScene"), e.body.innerHTML = "<p>" + (n.ie ? "" : "<br/>") + "</p>", a.setStart(e.body.firstChild, 0).setCursor(!1, !0), e._selectionChange(), void 0
							}
							if(8 == o) {
								if(a = e.selection.getRange(), t = a.collapsed, e.fireEvent("delkeydown", i)) return;
								var l, c;
								if(a.collapsed && a.inFillChar() && (l = a.startContainer, d.isFillChar(l) ? (a.setStartBefore(l).shrinkBoundary(!0).collapse(!0), d.remove(l)) : (l.nodeValue = l.nodeValue.replace(new RegExp("^" + d.fillChar), ""), a.startOffset--, a.collapse(!0).select(!0))), l = a.getClosedNode()) return e.fireEvent("saveScene"), a.setStartBefore(l), d.remove(l), a.setCursor(), e.fireEvent("saveScene"), d.preventDefault(i), void 0;
								if(!n.ie && (l = d.findParentByTagName(a.startContainer, "table", !0), c = d.findParentByTagName(a.endContainer, "table", !0), l && !c || !l && c || l !== c)) return i.preventDefault(), void 0;
								if(l = a.startContainer, a.collapsed && 1 == l.nodeType) {
									var u = l.childNodes[a.startOffset - 1];
									u && 1 == u.nodeType && "BR" == u.tagName && (e.fireEvent("saveScene"), a.setStartBefore(u).collapse(!0), d.remove(u), a.select(), e.fireEvent("saveScene"))
								}
							}
							if(n.gecko && 46 == o) {
								var f = e.selection.getRange();
								if(f.collapsed && (l = f.startContainer, d.isEmptyBlock(l))) {
									for(var h = l.parentNode; 1 == d.getChildCount(h) && !d.isBody(h);) l = h, h = h.parentNode;
									return l === h.lastChild && i.preventDefault(), void 0
								}
							}
						}), e.addListener("keyup", function(e, r) {
							var i, o = r.keyCode || r.which,
								a = this;
							if(8 == o) {
								if(a.fireEvent("delkeyup")) return;
								if(i = a.selection.getRange(), i.collapsed) {
									var s, l = ["h1", "h2", "h3", "h4", "h5", "h6"];
									if((s = d.findParentByTagName(i.startContainer, l, !0)) && d.isEmptyBlock(s)) {
										var c = s.previousSibling;
										if(c && "TABLE" != c.nodeName) return d.remove(s), i.setStartAtLast(c).setCursor(!1, !0), void 0;
										var u = s.nextSibling;
										if(u && "TABLE" != u.nodeName) return d.remove(s), i.setStartAtFirst(u).setCursor(!1, !0), void 0
									}
									if(d.isBody(i.startContainer)) {
										var s = d.createElement(a.document, "p", {
											innerHTML: n.ie ? d.fillChar : "<br/>"
										});
										i.insertNode(s).setStart(s, 0).setCursor(!1, !0)
									}
								}
								if(!t && (3 == i.startContainer.nodeType || 1 == i.startContainer.nodeType && d.isEmptyBlock(i.startContainer)))
									if(n.ie) {
										var f = i.document.createElement("span");
										i.insertNode(f).setStartBefore(f).collapse(!0), i.select(), d.remove(f)
									} else i.select()
							}
						})
					}, UE.plugins.fiximgclick = function() {
						var e = this;
						n.webkit && e.addListener("click", function(n, r) {
							if("IMG" == r.target.tagName) {
								var i = new t.Range(e.document);
								i.selectNode(r.target).select()
							}
						})
					},
					function(e) {
						function t(t, n, r) {
							if(t.prototype = e.extend2(e.extend({}, n), (UE.ui[r] || i).prototype, !0), t.prototype.supper = (UE.ui[r] || i).prototype, UE.ui[r] && UE.ui[r].prototype.defaultOpt) {
								var o = UE.ui[r].prototype.defaultOpt,
									a = t.prototype.defaultOpt;
								t.prototype.defaultOpt = e.extend({}, o, a || {})
							}
							return t
						}

						function n(t, n) {
							e[o + n] = t, e.fn[o + n] = function(n) {
								var r, i = Array.prototype.slice.call(arguments, 1);
								return this.each(function(o, a) {
									var s = e(a),
										l = s.edui();
									if(l || (t(n && e.isPlainObject(n) ? n : {}, s), s.edui(l)), "string" == e.type(n))
										if("this" == n) r = l;
										else {
											if(r = l[n].apply(l, i), r !== l && void 0 !== r) return !1;
											r = null
										}
								}), null !== r ? r : this
							}
						}
						e.parseTmpl = function(e, t) {
							var n = "var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('" + e.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/<%=([\s\S]+?)%>/g, function(e, t) {
									return "'," + t.replace(/\\'/g, "'") + ",'"
								}).replace(/<%([\s\S]+?)%>/g, function(e, t) {
									return "');" + t.replace(/\\'/g, "'").replace(/[\r\n\t]/g, " ") + "__p.push('"
								}).replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace(/\t/g, "\\t") + "');}return __p.join('');",
								r = new Function("obj", n);
							return t ? r(t) : r
						}, e.extend2 = function(t) {
							for(var n = arguments, r = "boolean" == e.type(n[n.length - 1]) ? n[n.length - 1] : !1, i = "boolean" == e.type(n[n.length - 1]) ? n.length - 1 : n.length, o = 1; i > o; o++) {
								var a = n[o];
								for(var s in a) r && t.hasOwnProperty(s) || (t[s] = a[s])
							}
							return t
						}, e.IE6 = !!window.ActiveXObject && 6 == parseFloat(navigator.userAgent.match(/msie (\d+)/i)[1]);
						var r = [],
							i = function() {},
							o = "edui";
						i.prototype = {
							on: function(t, n) {
								return this.root().on(t, e.proxy(n, this)), this
							},
							off: function(t, n) {
								return this.root().off(t, e.proxy(n, this)), this
							},
							trigger: function(e, t) {
								return this.root().trigger(e, t) === !1 ? !1 : this
							},
							root: function(e) {
								return this._$el || (this._$el = e)
							},
							destroy: function() {},
							data: function(e, t) {
								return void 0 !== t ? (this.root().data(o + e, t), this) : this.root().data(o + e)
							},
							register: function(t, n, i) {
								r.push({
									evtname: t,
									$els: e.isArray(n) ? n : [n],
									handler: e.proxy(i, n)
								})
							}
						}, e.fn.edui = function(e) {
							return e ? this.data("eduiwidget", e) : this.data("eduiwidget")
						};
						var a = 1;
						UE.ui = {
							define: function(r, i, s) {
								var l = UE.ui[r] = t(function(t, n) {
									var i = function() {};
									e.extend(i.prototype, l.prototype, {
										guid: r + a++,
										widgetName: r
									});
									var s = new i;
									if("string" == e.type(t)) return s.init && s.init({}), s.root().edui(s), s.root().find("a").click(function(e) {
										e.preventDefault()
									}), s.root()[o + r].apply(s.root(), arguments);
									n && s.root(n), s.init && s.init(!t || e.isPlainObject(t) ? e.extend2(t || {}, s.defaultOpt || {}, !0) : t);
									try {
										s.root().find("a").click(function(e) {
											e.preventDefault()
										})
									} catch(d) {}
									return s.root().edui(s)
								}, i, s);
								n(l, r)
							}
						}, e(function() {
							e(document).on("click mouseup mousedown dblclickc mouseover", function(t) {
								e.each(r, function(n, r) {
									r.evtname == t.type && e.each(r.$els, function(n, i) {
										i[0] === t.target || e.contains(i[0], t.target) || r.handler(t)
									})
								})
							})
						})
					}(jQuery), UE.ui.define("button", {
						tpl: '<<%if(!texttype){%>div class="edui-btn edui-btn-<%=icon%> <%if(name){%>edui-btn-name-<%=name%><%}%>" unselectable="on" onmousedown="return false" <%}else{%>a class="edui-text-btn"<%}%><% if(title) {%> data-original-title="<%=title%>" <%};%>> <% if(icon) {%><div unselectable="on" class="edui-icon-<%=icon%> edui-icon"></div><% }; %><%if(text) {%><span unselectable="on" onmousedown="return false" class="edui-button-label"><%=text%></span><%}%><%if(caret && text){%><span class="edui-button-spacing"></span><%}%><% if(caret) {%><span unselectable="on" onmousedown="return false" class="edui-caret"></span><% };%></<%if(!texttype){%>div<%}else{%>a<%}%>>',
						defaultOpt: {
							text: "",
							title: "",
							icon: "",
							width: "",
							caret: !1,
							texttype: !1,
							click: function() {}
						},
						init: function(e) {
							var t = this;
							return t.root($($.parseTmpl(t.tpl, e))).click(function(n) {
								t.wrapclick(e.click, n)
							}), t.root().hover(function() {
								t.root().hasClass("disabled") || t.root().toggleClass("hover")
							}), t
						},
						wrapclick: function(e, t) {
							return this.disabled() || (this.root().trigger("wrapclick"), $.proxy(e, this, t)()), this
						},
						label: function(e) {
							return void 0 === e ? this.root().find(".edui-button-label").text() : (this.root().find(".edui-button-label").text(e), this)
						},
						disabled: function(e) {
							return void 0 === e ? this.root().hasClass("disabled") : (this.root().toggleClass("disabled", e), this)
						},
						active: function(e) {
							return void 0 === e ? this.root().hasClass("active") : (this.root().toggleClass("active", e), this)
						},
						mergeWith: function(e) {
							var t = this;
							t.data("$mergeObj", e), e.edui().data("$mergeObj", t.root()), $.contains(document.body, e[0]) || e.appendTo(t.root()), t.on("click", function() {
								t.wrapclick(function() {
									e.edui().show()
								})
							}).register("click", t.root(), function() {
								e.hide()
							})
						}
					}),
					function() {
						UE.ui.define("toolbar", {
							tpl: '<div class="edui-toolbar"  ><div class="edui-btn-toolbar" unselectable="on" onmousedown="return false"  ></div></div>',
							init: function() {
								var e = this.root($(this.tpl));
								this.data("$btnToolbar", e.find(".edui-btn-toolbar"))
							},
							appendToBtnmenu: function(e) {
								var t = this.data("$btnToolbar");
								e = $.isArray(e) ? e : [e], $.each(e, function(e, n) {
									t.append(n)
								})
							}
						})
					}(), UE.ui.define("popup", {
						tpl: '<div class="edui-dropdown-menu edui-popup"<%if(!<%=stopprop%>){%>onmousedown="return false"<%}%>><div class="edui-popup-body"><%=subtpl%></div><div class="edui-popup-caret"></div></div>',
						defaultOpt: {
							stopprop: !1,
							subtpl: "",
							width: "",
							height: ""
						},
						init: function(e) {
							return this.root($($.parseTmpl(this.tpl, e))), this
						},
						mergeTpl: function(e) {
							return $.parseTmpl(this.tpl, {
								subtpl: e
							})
						},
						show: function(e, t) {
							t || (t = {});
							var n = t.fnname || "position";
							this.trigger("beforeshow") !== !1 && (this.root().css($.extend({
								display: "block"
							}, e ? {
								top: e[n]().top + ("right" == t.dir ? 0 : e.outerHeight()) - (t.offsetTop || 0),
								left: e[n]().left + ("right" == t.dir ? e.outerWidth() : 0) - (t.offsetLeft || 0),
								position: "absolute"
							} : {})), this.root().find(".edui-popup-caret").css({
								top: t.caretTop || 0,
								left: t.caretLeft || 0,
								position: "absolute"
							}).addClass(t.caretDir || "up"), this.trigger("aftershow"))
						},
						hide: function() {
							this.root().css("display", "none"), this.trigger("afterhide")
						},
						attachTo: function(e, t) {
							var n = this;
							e.data("$mergeObj") || (e.data("$mergeObj", n.root()), e.on("wrapclick", function() {
								n.show(e, t)
							}), n.register("click", e, function() {
								n.hide()
							}), n.data("$mergeObj", e))
						},
						getBodyContainer: function() {
							return this.root().find(".edui-popup-body")
						}
					}),
					function() {
						var e = {},
							t = {},
							r = [],
							o = null,
							a = null,
							s = {},
							l = {};
						i.extend(UE, {
							registerUI: function(t, n) {
								i.each(t.split(/\s+/), function(t) {
									e[t] = n
								})
							},
							getWidgetCallback: function(e) {
								return l[e]
							},
							registerWidget: function(e, t, n) {
								s[e] = $.extend2(t, {
									$root: null,
									_preventDefault: !1,
									root: function(e) {
										return this.$root || (this.$root = e)
									},
									preventDefault: function() {
										this._preventDefault = !0
									},
									clear: !1
								}), n && (l[e] = n)
							},
							getWidgetData: function(e) {
								return s[e]
							},
							setWidgetBody: function(e, t, n) {
								var r = s[e];
								if(!r) return null;
								r.root(t.edui().getBodyContainer()), r.initContent(n, t), r._preventDefault || r.initEvent(n, t), r.width && t.width(r.width);
								var i = l[e];
								i && !i.init && (l[e] = function() {
									var e = Array.prototype.slice.call(arguments, 0);
									i.apply(n, [n, t].concat(e))
								}, l[e].init = !0)
							},
							getUI: function(t, n, r) {
								return e[n] ? $.proxy(e[n], t, n, r)() : null
							},
							setActiveEditor: function(e) {
								o = e
							},
							getActiveEditor: function(e) {
								var n;
								if(i.each(UE.instants, function(e) {
										return e.selection.isFocus() ? (n = e, !1) : void 0
									}), n) return n;
								var r = e.parents(".edui-container");
								return o && r[0] === o.container ? o : ($.each(t, function(e, t) {
									return t.container === r[0] ? (n = t, !1) : void 0
								}), n)
							},
							setActiveWidget: function(e) {
								a = e
							},
							getActiveWidget: function() {
								return a
							},
							getEditor: function(e, n) {
								return t[e] || (t[e] = this.createEditor(e, n))
							},
							clearCache: function(e) {
								t[e] && delete t[e]
							},
							delEditor: function(e) {
								var n;
								(n = t[e]) && n.key && n.destroy()
							},
							ready: function(e) {
								r.push(e)
							},
							createEditor: function(e, t) {
								function n() {
									var t = this.createUI("#" + e, i);
									i.key = e, i.ready(function() {
										$.each(r, function(e, t) {
											$.proxy(t, i)()
										})
									});
									var n = i.options;
									n.minFrameWidth = n.initialFrameWidth ? n.initialFrameWidth : n.initialFrameWidth = i.$body.width(), t.css({
										width: n.initialFrameWidth,
										zIndex: i.getOpt("zIndex")
									}), UE.browser.ie && 6 === UE.browser.version && t[0].ownerDocument.execCommand("BackgroundImageCache", !1, !0), i.render(e), $.eduitooltip && $.eduitooltip("attachTo").css("z-index", i.getOpt("zIndex") + 1), t.find("a").click(function(e) {
										e.preventDefault()
									}), i.fireEvent("afteruiready")
								}
								var i = new UE.Editor(t),
									o = this;
								return i.langIsReady ? $.proxy(n, o)() : i.addListener("langReady", $.proxy(n, o)), i
							},
							createUI: function(e, t) {
								var r = '<div class="edui-editor-top"   ></div><div class="edui-editor-middle"></div><div class="edui-editor-bottom"></div><div class="edui-editor-msg"   ></div>',
									i = $(e),
									o = $('<div class="edui-container"><div class="edui-editor-body">' + r + "</div></div>").insertBefore(i);
								if(t.$container = o, t.container = o[0], t.$body = i, t.$bodywrap = o.find(".edui-editor-body"), n.ie && n.ie9above) {
									var a = $('<span style="padding:0;margin:0;height:0;width:0"></span>');
									a.insertAfter(o)
								}
								return o.find(".edui-editor-middle").append(i), o.find(".edui-editor-body").before(this.createToolbar(t.options, t)), o.find(".edui-toolbar").append($('<div class="edui-dialog-container"></div>')), o
							},
							createToolbar: function(e, t) {
								var n = this,
									r = $.eduitoolbar(),
									i = r.edui();
								if(e.toolbar && e.toolbar.length) {
									var o = [];
									$.each(e.toolbar, function(e, r) {
										$.each(r.split(/\s+/), function(e, r) {
											if("|" == r) $.eduiseparator && o.push($.eduiseparator());
											else {
												var i = n.getUI(t, r);
												"fullscreen" == r ? i && o.unshift(i) : i && o.push(i)
											}
										}), o.length && i.appendToBtnmenu(o)
									})
								} else if(r.find(".edui-btn-toolbar").remove(), e.noToolbar) return r.remove(), "";
								return r
							}
						})
					}(), UE.ready(function() {
						function e() {
							return UE.ui ? 1 : (alert(l.autofloatMsg), 0)
						}

						function t() {
							var e = document.body.style;
							e.backgroundImage = 'url("about:blank")', e.backgroundAttachment = "fixed"
						}

						function r() {
							if(!b) {
								var e = d.getXY(h),
									t = d.getComputedStyle(h, "position"),
									r = d.getComputedStyle(h, "left");
								h.style.width = h.offsetWidth + "px", h.style.zIndex = 1 * s.options.zIndex + 1, $(h).addClass("edui-toolbar-floating"), h.parentNode.insertBefore(v, h), m || g && n.ie ? ("absolute" != h.style.position && (h.style.position = "absolute"), h.style.top = (document.body.scrollTop || document.documentElement.scrollTop) - p + u + "px") : "fixed" != h.style.position && (h.style.position = "fixed", h.style.top = u + "px", ("absolute" == t || "relative" == t) && parseFloat(r) && (h.style.left = e.x + "px"))
							}
						}

						function o() {
							v.parentNode && v.parentNode.removeChild(v), h.style.cssText = f, $(h).removeClass("edui-toolbar-floating")
						}

						function a() {
							var e = y(s.container),
								t = s.options.topOffset || 0,
								n = s.options.toolbarTopOffset || 0;
							e.top - t < 0 && e.bottom - h.offsetHeight > n ? r() : o()
						}
						var s = this,
							l = s.getLang();
						s.setOpt({
							topOffset: 0
						});
						var c = s.options.autoFloatEnabled !== !1,
							u = s.options.topOffset;
						if(c) {
							var f, h, p, m = n.ie && n.version <= 6,
								g = n.quirks,
								v = document.createElement("div"),
								y = function(e) {
									var t;
									try {
										t = e.getBoundingClientRect()
									} catch(n) {
										t = {
											left: 0,
											top: 0,
											height: 0,
											width: 0
										}
									}
									for(var r, i = {
											left: Math.round(t.left),
											top: Math.round(t.top),
											height: Math.round(t.bottom - t.top),
											width: Math.round(t.right - t.left)
										};
										(r = e.ownerDocument) !== document && (e = d.getWindow(r).frameElement);) t = e.getBoundingClientRect(), i.left += t.left, i.top += t.top;
									return i.bottom = i.top + i.height, i.right = i.left + i.width, i
								},
								b = !1,
								C = i.defer(function() {
									a()
								}, n.ie ? 200 : 100, !0);
							s.addListener("destroy", function() {
								d.un(window, ["scroll", "resize"], a), s.removeListener("keydown", C)
							}), e(s) && (h = $(".edui-toolbar", s.container)[0], s.addListener("afteruiready", function() {
								setTimeout(function() {
									p = $(h).offset().top
								}, 100)
							}), f = h.style.cssText, v.style.height = h.offsetHeight + "px", m && t(), d.on(window, ["scroll", "resize"], a), s.addListener("keydown", C), s.addListener("beforefullscreenchange", function(e, t) {
								t && (o(), b = t)
							}), s.addListener("fullscreenchanged", function(e, t) {
								t || a(), b = t
							}), s.addListener("sourcemodechanged", function() {
								setTimeout(function() {
									a()
								}, 0)
							}), s.addListener("clearDoc", function() {
								setTimeout(function() {
									a()
								}, 0)
							}))
						}
					})
			}()
		},
		initUEditorConfig: function() {
			! function() {
				var e = window.UEDITOR_HOME_URL || function() {
					function e() {
						this.documentURL = self.document.URL || self.location.href, this.separator = "/", this.separatorPattern = /\\|\//g, this.currentDir = "./", this.currentDirPattern = /^[.]\/]/, this.path = this.documentURL, this.stack = [], this.push(this.documentURL)
					}

					function t() {
						var t = e.getProtocol(this.path || "");
						t ? (this.protocol = t, this.localSeparator = /\\|\//.exec(this.path.replace(t, ""))[0], this.stack = []) : (t = /\\|\//.exec(this.path), t && (this.localSeparator = t[0]))
					}

					function n() {
						var t = this.path.replace(this.currentDirPattern, "");
						e.hasProtocol(this.path) && (t = t.replace(this.protocol, "")), t = t.split(this.localSeparator), t.length = t.length - 1;
						for(var n, r = 0, i = t.length, o = this.stack; i > r; r++) n = t[r], n && (e.isParentPath(n) ? o.pop() : o.push(n))
					}
					e.isParentPath = function(e) {
						return ".." === e
					}, e.hasProtocol = function(t) {
						return !!e.getProtocol(t)
					}, e.getProtocol = function(e) {
						var t = /^[^:]*:\/*/.exec(e);
						return t ? t[0] : null
					}, e.prototype = {
						push: function(e) {
							return this.path = e, t.call(this), n.call(this), this
						},
						getPath: function() {
							return this + ""
						},
						toString: function() {
							return this.protocol + this.stack.concat([""]).join(this.separator)
						}
					};
					var r = document.getElementsByTagName("script");
					return r = r[r.length - 1].src, (new e).push(r) + ""
				}();
				window.UEDITOR_CONFIG = {
					UEDITOR_HOME_URL: e,
					imageUrl: e + "php/imageUp.php",
					imagePath: e + "php/",
					toolbar: ["bold", "red", "paypost", "medal", "image", "video", "music", "formula", "emotion", "scrawl", "attachment", "topic", "quick_reply", "fullscreen"],
					maxHeight: 0,
					focusChangeColor: !0,
					noToolbar: 0,
					zIndex: 0,
					initialStyle: ".edui-editor-body .edui-body-container p{margin:5px 0;} .edui-editor-body{border:1px solid #ccc; border-left-color: #9a9a9a; border-top-color: #9a9a9a; } .edui-editor-body .edui-body-container{outline:none;padding:0 0 0 10px;word-wrap:break-word;font-size:14px;}.edui-editor-body.focus{border:1px solid #5c9dff}",
					excludePlugins: "",
					maxUndoCount: 21,
					autoFloatEnabled: !1,
					filterRules: function() {
						return {
							img: function(e) {
								var t = 560,
									n = e.getAttr("class");
								if("BDE_Music" == n || "BDE_Flash" == n || "BDE_Colorful" == n);
								else {
									var r = e.getAttr("src");
									/^file:\/\//.test(r) || /^data:/.test(r) ? e.parentNode.removeChild(e) : (/\.(jpg|jpeg|gif|png|bmp)/.test(r) || (r += ".gif"), e.setAttr(""), e.setAttr("pic_type", 1), e.setAttr("src", r), e.setAttr("class", "BDE_Smiley" == n ? n : "BDE_Image"), e.setAttr("onload", "EditorUI.resizeImage(this, " + t + ")"))
								}
								e.setAttr("unselectable", "on")
							},
							p: {
								$: {}
							},
							br: {
								$: {}
							},
							li: function(e) {
								e.tagName = "p", e.setAttr()
							},
							tr: function(e) {
								e.tagName = "p", e.setAttr()
							},
							th: function(e) {
								e.tagName = "span", e.setAttr(), e.innerHTML(e.innerText() + "&nbsp;")
							},
							td: function(e) {
								e.tagName = "span", e.setAttr(), e.innerHTML(e.innerText() + "&nbsp;")
							},
							"-": "script style meta iframe object"
						}
					}()
				}
			}()
		},
		initUEditorLang: function() {
			UE.I18N["zh-cn"] = {
				labelMap: {
					image: "\u56fe\u7247",
					video: "\u89c6\u9891",
					music: "\u97f3\u4e50",
					emotion: "\u8868\u60c5",
					scrawl: " \u6d82\u9e26",
					attachment: "\u9644\u4ef6"
				}
			}
		},
		initExtendUtils: function() {
			this.initXssUtils(), this.initUbbUtils()
		},
		initXssUtils: function() {
			UE.utils.postDataXssHandler = function(e) {
				var t = $.extend({}, e),
					n = $.tb.escapeHTML,
					r = ["title", "prefix", "kw", "word"];
				return $.each(r, function(i) {
					var o = r[i],
						a = e[o];
					void 0 !== a && (t[o] = n(a))
				}), t
			}
		},
		initUbbUtils: function() {
			UE.utils.html2ubb = function() {
				function e(e) {
					return e.replace(/(\[)|(\])/g, function(e) {
						return "[" == e ? "[lbk]" : "]" == e ? "[rbk]" : ""
					})
				}

				function t(e) {
					var t = "";
					switch((e.tagName || e.type || "").toLowerCase()) {
						case "a":
							t = r(e);
							break;
						case "img":
							t = i(e);
							break;
						case "embed":
							t = o(e);
							break;
						case "span":
							t = a(e);
							break;
						case "strong":
							t = s(e);
							break;
						case "br":
							t = l();
							break;
						case "text":
							t = d(e);
							break;
						case "comment":
							t = c();
							break;
						default:
							t = u(e)
					}
					return t
				}

				function n(e, t) {
					return e.getAttr(t) || ""
				}

				function r(e) {
					return n(e, "href") ? "[url]" + n(e, "href") + "[/url]" : ""
				}

				function i(e) {
					var t = "",
						r = "",
						i = " pic_type=" + n(e, "pic_type") + " width=" + n(e, "width") + " height=" + n(e, "height") + "]" + n(e, "src");
					switch(n(e, "class")) {
						case "BDE_Smiley":
							t = "[emotion", r = "[/emotion]";
							break;
						default:
							t = "[img", r = "[/img]"
					}
					return t + i + r
				}

				function o(e) {
					var t = "";
					switch(e.getAttr("class")) {
						case "BDE_Music":
							t = "[music width=" + n(e, "width") + " height=" + n(e, "height") + "]" + n(e, "src").replace(/&amp;/gi, "&") + "[/music]";
							break;
						case "BDE_Flash":
							t = "[video width=" + n(e, "width") + " height=" + n(e, "height") + " vsrc=" + n(e, "vsrc").replace(/&amp;/gi, "&") + " vpic=" + n(e, "vpic").replace(/&amp;/gi, "&") + " pkey=" + n(e, "pkey") + " vhsrc=" + n(e, "vhsrc").replace(/&amp;/gi, "&") + "]" + n(e, "src").replace(/&amp;/gi, "&") + "[/video]"
					}
					return t
				}

				function a(e) {
					var r = "";
					switch($.each(e.children, function(e, n) {
						r += t(n)
					}), n(e, "class")) {
						case "edit_font_color":
							r = r ? "[red]" + r + "[/red]" : "";
							break;
						case "edit_font_normal":
							r = r ? "[normal]" + r + "[/normal]" : ""
					}
					return r
				}

				function s(e) {
					var n = "";
					return $.each(e.children, function(e, r) {
						n += t(r)
					}), n ? "[bold]" + n + "[/bold]" : ""
				}

				function l() {
					return "[br]"
				}

				function d(e) {
					return e.data || ""
				}

				function c() {
					return ""
				}

				function u(e) {
					var n = "";
					return $.each(e.children, function(e, r) {
						n += t(r)
					}), n
				}
				return function(n, r) {
					if("string" == typeof n) {
						var i = "";
						if(r) return e(n || "");
						var o = UE.htmlparser(e(n || ""));
						return $.each(o.children || [], function(e, n) {
							i += t(n)
						}), i
					}
				}
			}(), UE.plugins.ubb = function() {
				var e = this;
				e.getContentUbb = function() {
					return UE.utils.html2ubb(e.getContent())
				}
			}
		}
	}
});
_.Module.define({
	path: "ueditor/widget/ueditor_extend_base",
	sub: {
		initial: function() {
			window.EditorUI || (this.initEditorUi(), this.initEditorBasePlugin())
		},
		initEditorUi: function() {
			! function(t) {
				var i = {
						modelFactories: {},
						layerFactories: {},
						registerModel: function(t, i) {
							this.modelFactories[t] = i
						},
						getModel: function(t) {
							var i = this.modelFactories[t];
							if(i) return i.call(this, PosterContext.getContext(), PosterContext.getAuthorities());
							throw "No such model factory: " + t
						},
						registerLayer: function(t, i) {
							this.layerFactories[t] = i
						},
						bindLayer: function(t, i) {
							var e = this.layerFactories[t];
							if(e) return e.call(this, i, PosterContext.getContext(), PosterContext.getAuthorities());
							throw "No such layer factory: " + t
						}
					},
					e = function() {
						this.data = {}, this.eventPool = $({})
					};
				e.prototype = {
					getButton: function() {
						return this.$button
					},
					setButton: function(t) {
						this.$button = t
					},
					getWidget: function() {
						return this.$widget
					},
					setWidget: function(t) {
						this.$widget = t
					},
					setValue: function(t, i) {
						this.data[t] = i
					},
					getValue: function(t) {
						return this.data[t]
					},
					bind: function() {
						this.eventPool.bind.apply(this.eventPool, arguments)
					},
					trigger: function() {
						this.eventPool.trigger.call(this.eventPool, arguments[0], Array.prototype.slice.call(arguments, 1))
					}
				}, i.EditorModel = e, i.resizeImage = function(t, i) {
					t.initWidth = t.initWidth || t.width, t.initHeight = t.initHeight || t.height, t.initWidth > i ? (t.height = t.initHeight / t.initWidth * i, t.width = i) : (t.height = t.initHeight, t.width = t.initWidth), t.onload = null
				}, t.EditorUI = i
			}(window)
		},
		initEditorBasePlugin: function() {
			UE.plugins.extendcontent = function() {
				var t = this,
					i = t.getExtendContent && t.getExtendContent;
				t.getExtendContent = function() {
					return i ? i() : {}
				};
				var e = t.getContent;
				t.getContent = function() {
					var t = e.call(this);
					return t.replace(/&#39;/g, "'").replace(/&quot;/g, '"').replace(/\0/g, "").replace(/(^(<br\/>)+)|((<br\/>)+$)/g, "")
				}, t.addListener("focus", function() {
					var i = t.$bodywrap && t.$bodywrap.length ? t.$bodywrap : t.$body;
					(t.options.focusChangeColor || void 0 == t.options.focusChangeColor) && i.addClass("body-container-focus")
				}), t.addListener("blur", function() {
					var i = t.$bodywrap && t.$bodywrap.length ? t.$bodywrap : t.$body;
					i.removeClass("body-container-focus")
				})
			}, UE.plugins.basicrules = function() {
				var t = this;
				t.addOutputRule(function(t) {
					$.each(t.getNodesByTagName("p"), function(t, i) {
						i.tagName = "br"
					})
				}, !0)
			}, UE.plugins.eduilastbtn = function() {
				var t = this;
				t.ready(function() {
					$("#tb_rich_poster_container").find(".edui-btn").filter(function() {
						return "none" != $(this).css("display")
					}).last().addClass("edui-last-btn")
				})
			}
		}
	}
});
_.Module.define({
	path: "ueditor/widget/background",
	sub: {
		initial: function(t, i) {
			t = t || window.UE, i = i || window.EditorUI, this.initPlugin(t, this), this.initLayer(i, this), this.initModel(i, this), this.initAdapter(t, i, this)
		},
		initPlugin: function(t) {
			t.plugins.background = function() {
				var i = this,
					e = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,
					n = "default",
					s = 0,
					o = !0,
					a = {
						id: 0,
						topPic: "transparent",
						middlePic: "transparent",
						bottomPic: "transparent",
						topHeight: "0",
						bottomHeight: "0"
					},
					r = ["", "edui-editor-bubble-model"],
					d = {
						"default": {
							cssClass: r[0],
							hasBack: 0,
							size: {
								width: 708,
								height: 220
							},
							fullscreenSize: {
								width: 968,
								height: 350
							}
						},
						bubble: {
							cssClass: r[1],
							hasBack: 1,
							size: {
								width: 500,
								height: 130
							},
							fullscreenSize: {
								width: 968,
								height: 130
							}
						}
					},
					c = function(t) {
						return isNaN(parseInt(t)) ? 0 : parseInt(t)
					},
					u = function(u, h) {
						h = $.extend({}, a, h), s = h.id || 0, o = h.isBuy, u = s ? d[u] ? u : n : n;
						var l = d[u],
							g = d[n].size.height;
						t.utils.each(r, function(t) {
							t && i.$container.removeClass(t)
						}), i.$container.addClass(l.cssClass), t.utils.each(["top", "middle", "bottom"], function(t) {
							var n = i.$container.find(".edui-editor-" + t),
								s = h[t + "Pic"];
							s = l.hasBack ? e.test(s) ? s : "url(" + s + ") repeat-y" : "transparent";
							var o = {};
							if("middle" !== t) {
								var a = l.hasBack ? h[t + "Height"] : "0";
								o.height = a + "px", g -= Number(a), g -= c(n.css("margin-top")) + c(n.css("margin-bottom"))
							} else g -= c(n.css("margin-top")) + c(n.css("margin-bottom")) + c(n.css("padding-top")) + c(n.css("padding-bottom")) + c(n.css("border-top")) + c(n.css("border-bottom"));
							o.background = s || "transparent", n.css(o)
						});
						var p = l.size.width,
							b = $("html").hasClass("tb-ueditor-fullscreen") ? l.fullscreenSize.height : Math.min(g, l.size.height);
						i.resize(p, b), i.$container.trigger("setbackground", u)
					};
				i.ready(function() {
					i.$bodywrap && i.$bodywrap.on("click", ".edui-editor-top, .edui-editor-bottom, .edui-editor-msg", function() {
						i.focus()
					})
				}), i.commands.background = {
					execCommand: function(t, i, e) {
						u(i, e)
					}
				};
				var h = i.getExtendContent;
				i.getExtendContent = function() {
					var t = {
						ptype: s,
						ptypePower: o
					};
					return $.extend(h ? h() : {}, t)
				}
			}
		},
		initLayer: function() {},
		initModel: function() {},
		initAdapter: function() {}
	}
});
_.Module.define({
	path: "ueditor/widget/auto_link",
	sub: {
		initial: function(t, e) {
			t = t || window.UE, e = e || window.EditorUI, this.initPlugin(t, this), this.initLayer(), this.initModel(), this.initAdapter()
		},
		initPlugin: function(t) {
			t.plugins.autolink = function() {
				var e = function(t) {
					var e, n = String.prototype.split,
						i = /()??/.exec("")[1] === t;
					return e = function(e, r, a) {
						if("[object RegExp]" !== Object.prototype.toString.call(r)) return n.call(e, r, a);
						var l, o, s, u, g = [],
							h = (r.ignoreCase ? "i" : "") + (r.multiline ? "m" : "") + (r.extended ? "x" : "") + (r.sticky ? "y" : ""),
							p = 0,
							r = new RegExp(r.source, h + "g");
						for(e += "", i || (l = new RegExp("^" + r.source + "$(?!\\s)", h)), a = a === t ? -1 >>> 0 : a >>> 0;
							(o = r.exec(e)) && (s = o.index + o[0].length, !(s > p && (g.push(e.slice(p, o.index)), !i && o.length > 1 && o[0].replace(l, function() {
								for(var e = 1; e < arguments.length - 2; e++) arguments[e] === t && (o[e] = t)
							}), o.length > 1 && o.index < e.length && Array.prototype.push.apply(g, o.slice(1)), u = o[0].length, p = s, g.length >= a)));) r.lastIndex === o.index && r.lastIndex++;
						return p === e.length ? (u || !r.test("")) && g.push("") : g.push(e.slice(p)), g.length > a ? g.slice(0, a) : g
					}
				}();
				this.addOutputRule(function(n) {
					$.each(n.getNodesByTagName("a"), function(t, e) {
						var n = e.innerText();
						/^\w+:\/\//.test(n) || (n = "http://" + n), e.setAttr("href", n), e.setAttr("target", "_blank")
					});
					var i = [];
					n.traversal(function(t) {
						"text" == t.type && "a" != t.parentNode.tagName && i.push(t)
					});
					for(var r, a = 0; r = i[a]; a++) {
						var l = r.getData().replace(/&#39;/g, "'").replace(/&quot;/g, '"'),
							o = e(l, /((?:www\.|http:\/\/|mms:\/\/|rtsp:\/\/|ftp:\/\/|https:\/\/)[0-9a-zA-Z;\.\!\~\#\?\:\/\&\%\-\+\*\=\@\_\$]+)/gi);
						if(o.length > 1) {
							for(var s = r.parentNode, u = 0, g = o.length; g > u; u++) {
								var h = o[u];
								if(h.length > 0) {
									var p;
									u % 2 == 0 ? p = t.uNode.createText(h) : (p = t.uNode.createElement("a"), /^\w+:\/\//.test(h) ? p.setAttr("href", h) : p.setAttr("href", "http://" + h), p.setAttr("target", "_blank"), p.innerText(h)), s.insertBefore(p, r)
								}
							}
							s.removeChild(r)
						}
					}
					$.each(n.getNodesByTagName("a"), function(e, n) {
						n.setAttr("href", t.utils.unhtml(n.getAttr("href")))
					})
				}, !0)
			}
		},
		initLayer: function() {},
		initModel: function() {},
		initAdapter: function() {}
	}
});
_.Module.define({
	path: "ueditor/widget/tb_gram",
	sub: {
		initial: function(t) {
			this.cdnCache = !0, this.$container = t.container, this.forumId = t.forumId, this.buildFlash(), this.bindEvents()
		},
		bindEvents: function() {},
		buildFlash: function() {
			$(".tb_gram_swf_container") && $(".tb_gram_swf_container").remove();
			var t = this,
				i = this.$container,
				o = i.offset(),
				s = $('<div class="tb_gram_swf_container"></div>');
			this.$swfContainer = s, $("body").append(s);
			new $.swf("//tb2.bdstatic.com/tb/img/TbGram_3d2499d.swf", {
				id: "TbGramSwf",
				container: s,
				width: 50,
				height: 57,
				params: {
					wmode: "transparent"
				},
				vars: {
					filterconfigURL: "/tb/static-common/htmlfilter/filterconf_tbgram.js",
					sticksConfigURL: "/tb/static-common/sticks/sticks_tabs_conf.js",
					uploadUrl: "https://uploadphotos.baidu.com/upload/pic?tbs=4f165305af36ccdc013751701760125500_1&fid=" + this.forumId,
					iconPath: "//tb1.bdstatic.com/tb/static-common/images/"
				},
				callBacks: {
					onResize: function() {
						t.setScroll(!1), this.width = $(window).width(), this.height = $(window).height(), s.css({
							position: "absolute",
							left: 0,
							top: $(document).scrollTop(),
							"z-index": 99999
						})
					},
					onUploaded: function(i) {
						var o = [];
						for(var s in i) {
							var n = i[s];
							n && 0 == n.err_no && n.info && o.push({
								picType: 0,
								width: n.info.fullpic_width,
								height: n.info.fullpic_height,
								url: n.info.pic_water ? n.info.pic_water.replace(/http:\/\/imgsrc/, "https://imgsa") : n.info.pic_water
							})
						}
						t.trigger("ok", o), t.setScroll(!0), t.trigger("close")
					},
					onClose: function() {
						t.setScroll(!0), t.trigger("close")
					},
					onMouseOver: function() {
						t.$container.addClass("hover")
					},
					onMouseOut: function() {
						t.$container.removeClass("hover")
					}
				}
			});
			s.css({
				position: "absolute",
				left: o.left + 26,
				top: o.top,
				"z-index": 300
			})
		},
		setScroll: function(t) {
			var i = $("html"),
				o = i[0].scrollTop;
			t ? i.css({
				overflow: this.htmloverflow || "",
				"padding-right": 0
			}) : (i[0].style.overFlow && (this.htmloverflow = i[0].style.overFlow), i.css({
				overflow: "hidden",
				"padding-right": 17
			})), i[0].scrollTop = o
		},
		destorySwf: function() {
			this.$swfContainer && this.$swfContainer.remove()
		}
	}
});
_.Module.define({
	path: "ueditor/widget/slide_select",
	sub: {
		defaultOpt: {
			wrap: $("body"),
			forumId: 0,
			propsCategory: 0,
			dataArr: [],
			showNum: 5,
			showSlide: !0,
			wrapCss: {},
			navNextCss: {},
			navPrevCss: {},
			props: [],
			limitFreeArr: []
		},
		initial: function(t) {
			this.opt = $.extend(this.defaultOpt, t), this.sortData(), this.buildHtml()
		},
		sortData: function() {
			var t = this,
				e = [8585575, 73443, 5338019, 1948989, 615748].join("|"),
				s = new RegExp("^(" + e + ")$");
			s.test(this.opt.forumId) && this.opt.dataArr.sort(function(e, s) {
				var i = t.fanAuthority(e.key),
					r = t.fanAuthority(s.key);
				return i && !r ? -1 : !i && r ? 1 : 0
			}), this.opt.dataArr.sort(function(e, s) {
				var i = !t.propAuthority(e.key),
					r = !t.propAuthority(s.key);
				return i && !r ? -1 : !i && r ? 1 : i && r ? t.getPropUpdateTime(s.key) - t.getPropUpdateTime(e.key) : 0
			})
		},
		buildHtml: function() {
			var t = new Array,
				e = "",
				s = null;
			t.push('<div class="slide_pager">'), t.push('<div class="slide_nav slide_nav_prev"></div>'), t.push('<div class="slide_nav slide_nav_next"></div>'), t.push("</div>"), t.push('<div class="slide_wrap">'), t.push('<ul class="slide_list clearfix">');
			for(var i = 0; i < this.opt.dataArr.length; i++) {
				if(s = this.opt.dataArr[i], e = "/tb/static-common/img/props/" + s.key + ".png?t=0115", t.push('<li class="slide_item' + (s.extendClass ? " " + s.extendClass : "") + '"'), t.push('data-key="' + s.key + '">'), this.propAuthority(s.key)) {
					var r = "";
					if(101 == this.opt.propsCategory || 104 == this.opt.propsCategory) {
						var a = "need_buy_logo";
						this.fanAuthority(s.key) && (a = "need_buy_fan_logo"), $.inArray(s.key, this.opt.limitFreeArr) > -1 && (a = "need_buy_limit_free_logo"), r = '<a class="need_buy_link  need_buy_preview_link" onclick="return false;" target="_blank"><span class="' + a + '"></span></a>'
					} else r = '<a class="need_buy_link " href="/tbmall/propslist?category=' + this.opt.propsCategory + '" target="_blank"><span class="need_buy_logo"></span></a>';
					t.push(r)
				}
				t.push('<p class="slide_item_img"><img src="' + e + '"/></p><p class="slide_item_title">' + s.title + "</p>"), t.push("</li>")
			}
			t.push("</ul>"), t.push("</div>"), this.opt.wrap.html(t.join(""))
		},
		initCarouse: function() {
			var t = this,
				e = this.opt.wrap.find(".slide_wrap").css(t.opt.wrapCss);
			this.opt.showSlide && ($(".slide_nav").show(), e.jCarouselLite({
				btnNext: $(".slide_nav_next").css(t.opt.navNextCss),
				btnPrev: $(".slide_nav_prev").css(t.opt.navPrevCss),
				visible: t.opt.showNum,
				circular: !0,
				auto: !1
			}))
		},
		propAuthority: function(t) {
			var e = [1039998, 1039999].join("|"),
				s = 0,
				i = this.opt.props,
				r = new RegExp("^(" + e + ")$");
			return r.test(t) ? !1 : !i || $.isEmptyObject(i) ? !0 : (propsCate = i[this.opt.propsCategory], s = Math.floor((new Date).getTime() / 1e3), !(propsCate && propsCate[t] && s <= propsCate[t].end_time))
		},
		getPropUpdateTime: function(t) {
			var e = this.opt.props;
			if(!e || $.isEmptyObject(e)) return !1;
			var s = e[this.opt.propsCategory];
			return s && s[t] && s[t].update_time
		},
		fanAuthority: function(t) {
			var e = [1019001, 1019002, 1019003, 1049001, 1049002, 1049003].join("|"),
				s = new RegExp("^(" + e + ")$");
			return s.test(t)
		}
	}
});
_.Module.define({
	path: "tbui/widget/image_flash_editor",
	sub: {
		_swfPath: "//tb2.bdstatic.com/tb/img/FlashFilterUI_6e543a5.swf",
		_vars: {
			configURL: "/tb/static-common/htmlfilter/filterconf.js",
			reviewURL: "",
			iconPath: "/tb/static-common/img/image_editor/",
			uploadURL: "",
			imageURL: null,
			maxSize: 5,
			maxWidth: 3e3,
			maxHeight: 3e3
		},
		_events: ["upload_complete", "compress_complete", "upload_error"],
		_flashInstance: null,
		initial: function(t, i) {
			i && $.extend(this._vars, i), this._buildHTML(t.container, t.width, t.height), this._buildFlash(t)
		},
		_buildHTML: function(t, i, s) {
			var e = this,
				a = '<div class="image_flash_editor"><div class="flash_editor_container"></div><div class="button_bar"><a href="#" class="btn_default btn_middle j_ok">\u786e \u5b9a</a><a href="#" class="btn_sub btn_middle j_cancel">\u53d6 \u6d88</a></div></div>';
			this.$root = $(a), this.$root.css({
				width: i,
				height: s
			}), this.$root.find(".j_ok").click(function() {
				return e.startUpload(), !1
			}), this.$root.find(".j_cancel").click(function() {
				return e.trigger("cancel"), !1
			}), $(t).append(this.$root)
		},
		_buildFlash: function(t) {
			this._swfOptions = t, this._swfOptions.height = t.height - 45, this._swfOptions.container = this.$root.find(".flash_editor_container"), this._swfOptions.vars = this._vars, this._swfOptions.callBacks = {}, this._generateCallBack(), this._flashInstance = new $.swf(this._swfPath, this._swfOptions)
		},
		_generateCallBack: function() {
			var t = this;
			for(var i in this._events) {
				var s = this._events[i];
				this._swfOptions.callBacks[s] = function(i) {
					return function() {
						var s = Array.prototype.slice.call(arguments, 0);
						s.unshift(i), t.trigger.apply(t, s)
					}
				}(s)
			}
		},
		loadRemoteImage: function(t) {
			this._flashInstance.remote("loadRemoteImage", t)
		},
		startUpload: function() {
			this._flashInstance.remote("startUpload")
		},
		setUploaderVariables: function(t) {
			this._flashInstance.remote("setUploaderVariables", t)
		},
		clearPreview: function() {
			this._flashInstance.remote("clearPreview")
		}
	}
});
_.Module.define({
	path: "tbui/widget/scroll_panel",
	sub: {
		dom: null,
		$content: null,
		$scrollBar: null,
		$scrollButton: null,
		_hasScroll: !1,
		_scrollStep: 50,
		_scrollTop: 0,
		_maxHeight: 0,
		initial: function(t) {
			this._buildUI(t), this._bindEvents(t), $(t.container).append(this.dom), this.setHeight(t.height || 100), t.content && this.setContent(t.content), t.scrollBarShow && this.bind("onScrollBarShow", t.scrollBarShow), t.scrollBarHide && this.bind("onScrollBarHide", t.scrollBarHide)
		},
		_buildUI: function(t) {
			this.dom = $('<div class="tbui_scroll_panel"></div>'), this.dom.html(['<div class="tbui_panel_content j_panel_content clearfix"><ul></ul></div>', '<div class="tbui_scroll_bar j_scroll_bar">', '<div class="tbui_scroll_button j_scroll_button">&nbsp;</div>', "</div>"].join("")), this.$content = this.dom.find(".j_panel_content:first"), this.$scrollBar = this.dom.find(".j_scroll_bar:first"), this.$scrollButton = this.dom.find(".j_scroll_button:first"), t.padding && this.$content.css("padding", t.padding)
		},
		_bindEvents: function() {
			var t = this,
				o = t.$content.get(0);
			this.$scrollButton.on("drag", function(i, l) {
				if(l) {
					var s = l.position;
					o.scrollTop = s.top / t.$content.height() * o.scrollHeight
				}
			}), this.$content.mousewheel(function(o, i) {
				o.preventDefault(), o.stopPropagation(), t._hasScroll && t.scrollTopTo(t._scrollTop - i * t._scrollStep)
			})
		},
		scrollTopTo: function(t) {
			var o = this,
				i = o.$content.get(0),
				t = Math.max(Math.min(t, i.scrollHeight - o.$content.height()), 0);
			t != o._scrollTop && (o._scrollTop = t, o.$content.stop(), o.$content.scrollTop(o._scrollTop), o._resizeScroll())
		},
		setHeight: function(t) {
			this._maxHeight = t, this._resizeHeight(), this._resizeScroll(), this.$scrollButton.draggable({
				containment: "parent"
			})
		},
		setContent: function(t) {
			this.$content.html(t), this.$content.get(0).scrollTop = this._scrollTop = 0, this._resizeHeight(), this._resizeScroll()
		},
		appendContent: function(t) {
			this.$content.append(t), this._resizeHeight(), this.scrollTopTo(2e4)
		},
		clearContent: function() {
			this.setContent("")
		},
		_resizeHeight: function() {
			this.$content.css("height", "");
			var t = this.$content.get(0),
				o = t.scrollHeight,
				i = Math.min(o, this._maxHeight);
			this.$content.css("height", i)
		},
		_resizeScroll: function() {
			var t = this.$content.get(0),
				o = t.scrollHeight,
				i = t.scrollTop,
				l = this.$content.innerHeight();
			l >= o ? (this.$scrollBar.hide(), this.dom.addClass("tbui_no_scroll_bar"), this.trigger("onScrollBarHide"), this._hasScroll = !1) : (this.$scrollBar.show(), this.$scrollBar.height(l), this.$scrollButton.height(l / o * l), this.$scrollButton.css("top", i / o * l), this.trigger("onScrollBarShow"), this._hasScroll = !0)
		}
	}
});
_.Module.define({
	path: "image-lib/widget/image_exif",
	sub: {
		initial: function() {},
		getOrientation: function(t) {
			if(null == t) return 0;
			for(var e = 0, r = 0; e + 3 < t.length && 255 == (255 & t[e++]);) {
				var i = 255 & t[e];
				if(255 != i && (e++, 216 != i && 1 != i)) {
					if(217 == i || 218 == i) break;
					if(r = this.pack(t, e, 2, !1), 2 > r || e + r > t.length) return 0;
					if(225 == i && r >= 8 && 1165519206 == this.pack(t, e + 2, 4, !1) && 0 == this.pack(t, e + 6, 2, !1)) {
						e += 8, r -= 8;
						break
					}
					e += r, r = 0
				}
			}
			if(r > 8) {
				var a = this.pack(t, e, 4, !1);
				if(1229531648 != a && 1296891946 != a) return 0;
				var n = 1229531648 == a,
					s = this.pack(t, e + 4, 4, n) + 2;
				if(10 > s || s > r) return 0;
				e += s, r -= s;
				for(var h = this.pack(t, e - 2, 2, n); h-- > 0 && r >= 12;) {
					if(a = this.pack(t, e, 2, n), 274 == a) {
						var c = this.pack(t, e + 4, 4, n),
							o = this.pack(t, e + 8, c, n);
						switch(o) {
							case 1:
								return 0;
							case 3:
								return 180;
							case 6:
								return 90;
							case 8:
								return 270
						}
						return 0
					}
					e += 12, r -= 12
				}
			}
			return 0
		},
		pack: function(t, e, r, i) {
			var a = 1;
			i && (e += r - 1, a = -1);
			for(var n = 0; r-- > 0;) n = n << 8 | 255 & t[e], e += a;
			return n
		},
		rotateByorientation: function(t, e) {
			var r = new FileReader,
				i = this;
			t.size || this.trigger("success", t), r.onload = function() {
				var r = this.result,
					a = new Uint8Array(r),
					n = i.getOrientation(a);
				i.trigger("degreeloaded", n), e || i.rotateFile(t, n)
			}, r.readAsArrayBuffer(t)
		},
		rotateFile: function(t, e) {
			if(90 != e && 180 != e && 270 != e) return this.trigger("success", t), void 0;
			var r = new FileReader,
				i = this;
			r.onload = function() {
				var t = this.result,
					r = new Image;
				r.onload = function() {
					i.rotateImage(r, e)
				}, r.src = t
			}, r.readAsDataURL(t)
		},
		rotateImage: function(t, e) {
			var r = document.createElement("canvas"),
				i = r.getContext("2d"),
				a = t.width,
				n = t.height;
			i.save(), 90 == e || 270 == e ? (r.width = n, r.height = a, 90 == e ? i.translate(r.width, 0) : i.translate(0, r.height)) : (r.width = a, r.height = n, i.translate(r.width, r.height)), i.rotate(e * Math.PI / 180), i.drawImage(t, 0, 0, a, n), i.restore(), this.trigger("success", r)
		}
	}
});
_.Module.define({
	path: "tbui/widget/image_uploader",
	requires: ["image-lib/widget/image_exif"],
	sub: {
		_url: "",
		_xhr: null,
		_active: !1,
		_successFilter: null,
		_variable: null,
		_MAX_SIZE: 3145728,
		initial: function(t, e, i) {
			this._url = t, this._successFilter = e || null, i = i || {}, this._compressWidth = i.maxWidth || 3e3, this._compressHeight = i.maxHeight || 3e3
		},
		_createHXR: function() {
			var t = this,
				e = this._successFilter;
			this._xhr = new XMLHttpRequest, this._xhr.onload = function() {
				var i;
				try {
					i = $.parseJSON(t._xhr.responseText)
				} catch(r) {
					i = t._xhr.responseText
				}
				e ? e(i) ? t.trigger("success", t._xhr, i) : t.trigger("error", t._xhr, i) : t.trigger("success", t._xhr, i)
			}, this._xhr.onerror = function() {
				t.trigger("error", t._xhr)
			}, this._xhr.onabort = function() {
				t.trigger("abort", t._xhr)
			}, this._xhr.upload.onprogress = function(e) {
				t.trigger("progress", e.loaded, e.total)
			}
		},
		_dataURLtoBlob: function(t) {
			for(var e = atob(t.split(",")[1]), i = t.split(",")[0].split(":")[1].split(";")[0], r = new ArrayBuffer(e.length), s = new Uint8Array(r), o = 0; o < e.length; o++) s[o] = e.charCodeAt(o);
			var a = window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder;
			if(a) {
				var n = new a;
				return n.append(r), n.getBlob(i)
			}
			return Blob ? new Blob([r], {
				type: i
			}) : null
		},
		_compressFormDataURI: function(t, e) {
			var i = this._dataURLtoBlob(t),
				r = i.size,
				s = this;
			if(e >= r) s._uploadBlob(i);
			else {
				var o = new Image,
					a = document.createElement("canvas");
				o.onload = function() {
					var t = s._getCompressSize(o.width, o.height);
					a.width = t.width, a.height = t.height, a.getContext("2d").drawImage(o, 0, 0, o.width, o.height, 0, 0, t.width, t.height), o.onload = null, o.src = "about:blank", o = null;
					var n = a.toDataURL("image/jpeg", (e / r).toFixed(1));
					a.getContext("2d").clearRect(0, 0, t.width, t.height), a.width = a.height = 0, a = null, i = s._dataURLtoBlob(n), i.size > e ? s.trigger("error") : s._uploadBlob(i)
				}, o.src = t
			}
		},
		_uploadBlob: function(t) {
			var e = new FormData,
				i = this._variables;
			if(i && "object" == typeof i)
				for(var r in i) e.append(r, i[r]);
			e.append("file", t), this._active = !0, this._xhr || this._createHXR(), this._xhr.open("POST", this._url, !0), this._xhr.withCredentials = !0, this._xhr.send(e), i && i.html5stat && $.stats.sendRequest("fr=tb0&st_type=html5upload&st_value=send")
		},
		_getCompressSize: function(t, e) {
			var i = this._compressWidth,
				r = this._compressHeight,
				s = t / e,
				o = {};
			return t > i || e > r ? s > i / r ? (o.width = i, o.height = i / s) : (o.height = r, o.width = r * s) : o = {
				width: t,
				height: e
			}, o
		},
		setVariable: function(t) {
			this._variables = t
		},
		upload: function(t, e, i) {
			if(t) {
				e = "undefined" == typeof e ? this._MAX_SIZE : e;
				var r, s = this;
				if(t.getContext) r = i ? t.toDataURL(i) : t.toDataURL("image/jpeg", .8), t.getContext("2d").clearRect(0, 0, t.width, t.height), t.width = t.height = 0, t = null, s._compressFormDataURI(r, e);
				else if(t.size) {
					var o = this.requireInstance("image-lib/widget/image_exif");
					o.bind("success", function(o, a) {
						if(a.getContext) s.upload(a, e, i);
						else if(t.size > e) {
							var n = new FileReader;
							n.onload = function(t) {
								n.onload = null, r = t.target.result, s._compressFormDataURI(r, e)
							}, n.readAsDataURL(a)
						} else s._uploadBlob(a)
					}), o.rotateByorientation(t)
				}
			}
		},
		abort: function() {
			this._active && (this._xhr.abort(), this._active = !1)
		},
		distroy: function() {
			this.abort(), this.unbind("success"), this.unbind("error"), this.unbind("abort"), this.unbind("progress"), this._xhr = null
		}
	}
});
_.Module.define({
	path: "tbui/widget/image_uploader_manager/uploader_flash",
	requires: [],
	sub: {
		initial: function(e) {
			var t = {
				container: null,
				width: 200,
				height: 50,
				isAutoUp: !1,
				queueLen: 10,
				maxParallel: 2,
				maxSize: 3145728,
				maxWidth: 1e3,
				maxHeight: 1e3,
				uploadUrl: "",
				getUploadParams: null
			};
			this._options = $.extend(t, e || {}), this._token = this._makeToken(), this._flashVars = "", this._version = "1_0_1_3", this._EVENTS = ["onFileSelected", "onStartUpload", "onProgressListen", "onComplete", "onError"], this._reset()
		},
		_reset: function() {
			this._initFlashvars(), this._generateCallBack(), this._initUI()
		},
		_initFlashvars: function() {
			this._flashVars = ["maxSize=" + encodeURIComponent(this._options.maxSize), "maxWidth=" + encodeURIComponent(this._options.maxWidth), "maxHeight=" + encodeURIComponent(this._options.maxHeight), "isAutoUp=" + encodeURIComponent(this._options.isAutoUp), "queueLen=" + encodeURIComponent(this._options.queueLen), "maxParallel=" + encodeURIComponent(this._options.maxParallel), "useWorker=false", "uploadURL=" + encodeURIComponent(this._options.uploadUrl), "get_upload_params=" + (this._options.get_upload_params ? encodeURIComponent(this._options.get_upload_params) : "")].join("&")
		},
		_initUI: function() {
			var e, t = this._flashChecker(),
				i = t.version,
				a = "flashUploader" + this._token;
			t.hasFlash || this._flashError(), e = i[0] < 11 || i[1] < 4 ? "//tb2.bdstatic.com/tb/img/uploaderwithoutworker_ade2e66.swf" : "//tb2.bdstatic.com/tb/img/uploader_66720f8.swf";
			var o = '<object id="' + a + '" name="' + a + '" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + this._options.width + '" height="' + this._options.height + '"><param name="allowScriptAccess" value="always" /><param value="transparent" name="wmode"><param name="flashvars" value="' + this._flashVars + '" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + e + '" /></object>',
				s = '<object id="' + a + '" type="application/x-shockwave-flash" data="' + e + '" width="' + this._options.width + '" height="' + this._options.height + '"><param name="allowScriptAccess" value="always" /><param value="transparent" name="wmode"><param name="flashvars" value="' + this._flashVars + '" /></object>';
			this._options.container || (this._options.container = $("<div>").appendTo(document.body).css({
				position: "absolute",
				width: "1px",
				height: "1px",
				overflow: "hidden",
				left: 1,
				bottom: 1
			})), -1 != navigator.appName.indexOf("Microsoft") ? this._options.container.html(o) : this._options.container.html(s), this.flash = document[a] || window[a]
		},
		_generateCallBack: function() {
			for(var e = this, t = 0; t < this._EVENTS.length; t++) {
				var i = this._EVENTS[t],
					a = i + this._token;
				window[a] = function(t) {
					return function() {
						var i = Array.prototype.slice.call(arguments, 0);
						i.unshift(t), e.trigger.apply(e, i)
					}
				}(i), this._flashVars += "&" + this._decodeCamel(i) + "=" + a
			}
		},
		_decodeCamel: function(e) {
			return e.replace(/([A-Z])/g, function(e, t) {
				return "_" + t.toLowerCase()
			})
		},
		start: function() {
			this.flash.startUpload()
		},
		stop: function() {
			this.flash.pauseUpload()
		},
		deleteFile: function(e) {
			this.flash.deleteFile(e)
		},
		clearList: function() {
			this.flash.clearList()
		},
		reUploadError: function(e) {
			this.flash.resetErrorStatus(e)
		},
		_flashChecker: function() {
			var e, t, i = !1,
				a = $.browser.msie;
			return a ? (t = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), t && (i = !0, e = t.GetVariable("$version"))) : navigator.plugins && navigator.plugins.length > 0 && (t = navigator.plugins["Shockwave Flash"], t && (i = !0, e = t.description)), {
				hasFlash: i,
				version: e.match(/\d+/g)
			}
		},
		_flashError: function() {
			$.dialog.alert('\u68c0\u6d4b\u5230\u60a8\u7684\u6d4f\u89c8\u5668\u6ca1\u6709\u5b89\u88c5\u6700\u65b0Adobe Flash Player\u63d2\u4ef6\uff0c\u8fd9\u4f1a\u5f71\u54cd\u60a8\u8bbf\u95ee\u672c\u9875\u9762\u7684\u90e8\u5206\u529f\u80fd\u3002<br /><center>\u8bf7<a href="http://get.adobe.com/cn/flashplayer/" target="_blank">\u70b9\u6b64</a>\u5b89\u88c5</center>')
		},
		_makeToken: function() {
			var e = function() {
				return(65536 * (1 + Math.random()) | 0).toString(16).substring(1)
			};
			return e() + e() + "_" + e() + e() + e()
		},
		uploadBase64: function(e, t) {
			var i = "flashUploadBase64_" + this._makeToken();
			window[i] = function(e) {
				return function(t) {
					e(t)
				}
			}(t), this.flash.uploadBase64(e, i)
		}
	}
}), _.Module.define({
	path: "tbui/widget/image_uploader_manager/uploader_html5",
	requires: ["tbui/widget/image_uploader"],
	sub: {
		initial: function(e) {
			var t = {
				container: null,
				width: 200,
				height: 50,
				isAutoUp: !1,
				queueLen: 10,
				maxParallel: 16,
				maxSize: 3145728,
				limitSize: 10485760,
				maxWidth: 1e3,
				maxHeight: 1e3,
				uploadUrl: "",
				getUploadParams: null
			};
			this._options = $.extend(t, e || {}), this._uploadQueue = [], this._fileStatusArr = [], this._currentUploadNum = 0, this._uploadTimer = null, this._activeTotal = 0, this._typeFilter = "image/jpeg, image/jpg, image/png, image/gif, image/bmp", this._reset()
		},
		start: function() {
			this._trigger("onStartUpload"), this._startProgress()
		},
		stop: function() {
			this._stopProgress()
		},
		deleteFile: function(e) {
			for(var t = 0; t < this._uploadQueue.length; t++) {
				var i = this._uploadQueue[t];
				if(i && i.id == e) {
					i.uploader.distroy(), i.isStarted && i.percent < 100 && this._activeTotal--, this._uploadQueue.splice(t, 1);
					break
				}
			}
		},
		clearList: function() {
			this._uploadQueue.length = 0
		},
		reUploadError: function(e) {
			this._resetErrorStatus(e), this.start()
		},
		_reset: function() {
			this._initUI(), this._bindEvents()
		},
		_initUI: function() {
			this._fileInput = $('<input type="file" id="multi_file" style="display:none" multiple accept="' + this._typeFilter + '" />').get(0)
		},
		_bindEvents: function() {
			var e = this;
			this._fileInput.onclick = function() {
				e._fileInput.value = ""
			}, this._fileInput.onchange = function() {
				e._selectFile(e._fileInput.files)
			}, this._options.container && this._options.container.bind("click", function() {
				e._fileInput.value = "", e._fileInput.click()
			})
		},
		_selectFile: function(e) {
			for(var t = [], i = 0, a = e.length; a > i && i < this._options.queueLen; i++) {
				var o = e[i];
				"" != o.type && this._typeFilter.indexOf(o.type) >= 0 && t.push(this._add(o))
			}
			this._trigger("onFileSelected", {
				imageList: t,
				percent: 0
			}), this._options.isAutoUp && this.start()
		},
		_add: function(e) {
			var t, i = this,
				a = i._uploadQueue,
				o = {
					name: e.name,
					size: e.size,
					id: "img_" + this._makeToken() + "_" + a.length + "_" + e.type,
					percent: 0,
					status: "",
					errorCode: 0,
					errorMessage: null,
					source: e,
					isStarted: !1
				};
			return a.push(o), e.size > this._options.limitSize ? (o.errorCode = 1, o.errorMessage = "\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236", this._trigger("error", o), o.percent = 100, o.isStarted = !0, o) : (t = i.requireInstance("tbui/widget/image_uploader", [this._options.uploadUrl, null, {
				maxWidth: this._options.maxWidth,
				maxHeight: this._options.maxHeight
			}]), o.uploader = t, t.id = o.id, t.bind("success", this._uploadedHandler, this), t.bind("error", this._uploadedHandler, this), t.bind("progress", function(e) {
				return function(t, i, a) {
					e.percent = Math.min(e.percent + parseInt(20 * i / a, 10), 99)
				}
			}(o)), o)
		},
		_upload: function() {
			for(var e = 0, t = !0, i = 0; i < this._uploadQueue.length; i++) {
				var a = this._uploadQueue[i];
				a && (a.percent < 100 && (t = !1), this._activeTotal < this._options.maxParallel && !a.isStarted && (a.isStarted = !0, a.percent = 5, this.getUploadParams && a.uploader.setVariable(this.getUploadParams(a.id)), a.uploader.upload(a.source, this._options.maxSize), this._activeTotal++), a.percent < 50 && (a.percent += 5), e += a.percent / this._uploadQueue.length)
			}
			t ? (this._percent = 100, this.stop(), this._trigger("onComplete")) : (this._percent = parseInt(e, 10), this._trigger("onProgressListen"))
		},
		_uploadedHandler: function(e, t, i) {
			var a = e.target.id;
			this._activeTotal--;
			var o = this._getFileById(a);
			return o ? ("error" == e.type && (o.errorCode = 2, o.errorMessage = "\u7f51\u7edc\u9519\u8bef", this._trigger("error", o), o.percent = 100), "success" == e.type && (o.response = i.data || i || null, o.response.data || (o.response.data = $.extend({}, o.response)), o.response.info || (o.response.info = $.extend({}, o.response)), o.response.err_no = 0, o.response.error_code = 0, o.percent = 100), e.target.unbind("success", this._uploadedHandler), e.target.unbind("error", this._uploadedHandler), void 0) : !1
		},
		_trigger: function(e, t) {
			this.trigger(e, t || {
				imageList: this._uploadQueue,
				percent: this._percent
			})
		},
		_getFileById: function(e) {
			for(var t = 0; t < this._uploadQueue.length; t++) {
				var i = this._uploadQueue[t];
				if(i && i.id == e) return i
			}
			return null
		},
		_resetErrorStatus: function(e) {
			for(var t = 0; t < this._uploadQueue.length; t++) {
				var i = this._uploadQueue[t];
				if(i && 0 !== i.errorCode && (!e || e && i.id == e) && (i.percent = 0, i.errorCode = 0, i.errorMessage = null, i.isStarted = !1, i.response = null, e)) break
			}
		},
		_startProgress: function() {
			if(!this._uploadTimer) {
				var e = this;
				this._uploadTimer = setInterval(function() {
					e._upload()
				}, 1e3)
			}
		},
		_stopProgress: function() {
			clearInterval(this._uploadTimer), this._uploadTimer = null
		},
		_makeToken: function() {
			var e = function() {
				return(65536 * (1 + Math.random()) | 0).toString(16).substring(1)
			};
			return e() + e() + "_" + e() + e() + e()
		}
	}
}), _.Module.define({
	path: "tbui/widget/image_uploader_manager",
	requires: ["tbui/widget/image_uploader_manager/uploader_html5", "tbui/widget/image_uploader"],
	sub: {
		initial: function(e) {
			var t = {
				container: null,
				width: 200,
				height: 50,
				isAutoUp: !1,
				queueLen: 10,
				needWatermark: !1,
				fid: "",
				maxSize: 3145728,
				maxWidth: 3e3,
				maxHeight: 3e3,
				uploadUrl: "https:" === $.tb.location.getProtocol() ? "https://uploadphotos.baidu.com/upload/pic" : "http://upload.tieba.baidu.com/upload/pic",
				getUploadParams: null,
				tbsUrl: "//tieba.baidu.com/dc/common/imgtbs",
				isFlash: !1,
				save_yun_album: 0,
				pid: ""
			};
			this._options = $.extend(t, e || {}), this.uploader = null, this.EVENTS = ["onFileSelected", "onStartUpload", "onProgressListen", "onComplete", "onError"], this._reset()
		},
		_initUploadUrl: function(e) {
			var t = this;
			if(this._options.uploadUrl.indexOf("tbs") > 0) return e && e.apply(t), void 0;
			var i = $.ajax({
				url: this._options.tbsUrl,
				dataType: "json"
			});
			i.done(function(i) {
				0 === Number(i.no) ? (t._options.uploadUrl += "?tbs=" + i.data.tbs + (t._options.isWater ? "&is_wm=1" : "") + "&fid=" + (t._options.fid || "") + "&save_yun_album=" + t._options.save_yun_album, t._options.uploadUrl += t._options.pid ? "&pid=" + t._options.pid : "", e && e.apply(t)) : e && t._error()
			}).fail(function() {
				e && t._error()
			})
		},
		_reset: function() {
			navigator.userAgent.toLowerCase().match(/chrome\/([\d]+)/);
			window.FormData || (this._options.isFlash = !0), this._initUploadUrl(this._startImageUploader)
		},
		_startImageUploader: function() {
			this._options.isFlash ? this._options.container.click(function() {
				new $.dialog({
					width: 500,
					html: '<p style="text-align: center; padding: 18px 0;">\u60a8\u5f53\u524d\u7684\u6d4f\u89c8\u5668\u7248\u672c\u8fc7\u4f4e\uff0c\u65e0\u6cd5\u4e0a\u4f20\u56fe\u7247\uff0c<a href="https://liulanqi.baidu.com/" target="_blank">\u5efa\u8bae\u5347\u7ea7\u6d4f\u89c8\u5668</a></p>',
					title: "\u6e29\u99a8\u63d0\u793a",
					draggable: !1
				})
			}) : this._options.container && (this.uploader = this.requireInstance("tbui/widget/image_uploader_manager/uploader_html5", this._options)), this._options.container && this._generateCallBack()
		},
		_generateCallBack: function() {
			for(var e = this, t = 0; t < this.EVENTS.length; t++) {
				var i = this.EVENTS[t];
				this.uploader.bind(i, function(t) {
					return function(i, a) {
						e.trigger(t, a || i)
					}
				}(i))
			}
		},
		start: function() {
			this.uploader.start()
		},
		startUpload: function() {
			this.uploader.start()
		},
		stop: function() {
			this.uploader.stop()
		},
		stopUpload: function() {
			this.uploader.stop()
		},
		deleteFile: function(e) {
			this.uploader.deleteFile(e)
		},
		clearList: function() {
			this.uploader.clearList()
		},
		reUploadError: function(e) {
			this.uploader.resetErrorStatus(e)
		},
		uploadBase64: function(e, t) {
			var i = this;
			this._options.isFlash ? this._flashUploadBase64(e, t) : this._initUploadUrl(function() {
				i._ajaxUploadBase64(e, t)
			})
		},
		_ajaxUploadBase64: function(e, t) {
			var i = this;
			$.ajax({
				url: i._options.uploadUrl + "&_token=" + (new Date).getTime(),
				data: {
					filetype: "base64",
					file: e
				},
				type: "POST",
				success: function(e) {
					t.call(i, {
						errorCode: 0,
						errorMessage: "",
						response: e
					})
				},
				error: function(e) {
					t.call(i, {
						errorCode: 1,
						errorMessage: "\u4e0a\u4f20\u5931\u8d25",
						response: e
					})
				},
				dataType: "json"
			})
		},
		_flashUploadBase64: function(e, t) {
			var i = this;
			this.uploader && this.uploader.uploadBase64 ? this.uploader.uploadBase64(e, t) : setTimeout(function() {
				i._flashUploadBase64(e, t)
			}, 100)
		},
		_error: function(e) {
			e = $.extend({
				percent: 0,
				errorCode: 400,
				errorMessage: "\u521d\u59cb\u5316\u51fa\u9519",
				imageList: {}
			}, e || {}), this.trigger("onError", e)
		}
	}
});
_.Module.define({
	path: "ueditor/widget/picture_uploader",
	requires: ["tbui/widget/image_uploader_manager", "tbui/widget/scroll_panel", "tbui/widget/image_flash_editor", "ueditor/widget/slide_select"],
	sub: {
		DIALOG_TITLE: "\u63d2\u5165\u56fe\u7247",
		PICTURE_EDITOR_ANIMATE_DURATION: 500,
		ORIGINAL_PIC_URL_PREFIX: "https://imgsa.baidu.com/forum/pic/item/",
		THUMBNAIL_PIC_URL_PREFIX: "https://imgsa.baidu.com/forum/abpic/item/",
		uploadingImageMark: {},
		pictureEditorOpen: !1,
		layerHeight: 460,
		layerWidth: 680,
		waterType: 0,
		initial: function(e) {
			this.options = e;
			var t = this;
			t.uploader = t.initUploader($(e.uploadButtonContainer)), t.uploadingImageMark = {}
		},
		isrollback: function() {
			return "undefined" == typeof this.options.props || $.browser.msie && "6.0" == $.browser.version && !$.support.style
		},
		initUploader: function(e) {
			var t = this,
				i = this.requireInstance("tbui/widget/image_uploader_manager", {
					container: e,
					width: e.width(),
					height: e.height(),
					queueLen: 100,
					maxParallel: 5,
					fid: this.options.forumId,
					isAutoUp: !1,
					save_yun_album: this.options.save_yun_album
				});
			return i.bind("onFileSelected", function(e, a) {
				for(var r, o = t.deduplicate(a.imageList), n = o.duplicate, s = o.allowed, d = 0; r = n[d]; d++) i.deleteFile(r.id);
				var l = t.getRemainingNumber(),
					c = s.length;
				if(c > l) {
					for(var d = l; c > d; d++) i.deleteFile(s[d].id);
					s = s.splice(0, l)
				}
				i.startUpload(), t.renderImageList(s, "upload")
			}), i.bind("onProgressListen", function(e, i) {
				t.updateProgress(i)
			}), i.bind("onComplete", function(e, i) {
				t.updateProgress(i)
			}), i
		},
		getRemainingNumber: function() {
			return this.options.maxLimit ? Math.max(0, this.options.maxLimit - this.getImageNumber()) : Number.MAX_VALUE
		},
		getImageList: function() {
			return this.$imageContainer ? this.$imageContainer.find(".picture_item") : null
		},
		getImageNumber: function() {
			var e = this.getImageList();
			return e ? e.size() : 0
		},
		updateProgress: function(e) {
			for(var t, i = e.imageList, a = this.getImageList(), r = 0; t = i[r]; r++) this.updateItemProgress(t, a.filter('[data-id="' + t.id + '"]'))
		},
		updateItemProgress: function(e, t) {
			if(!t.is(".complete")) {
				var i = t.find("b"),
					a = e.percent;
				i.css({
					width: a + "%"
				}), 100 == a && this.renderItem(e.response, t)
			}
		},
		renderItem: function(e, t) {
			var i = this,
				a = t.find("b");
			if(null != e && 0 == e.error_code) {
				var r = e.info.pic_id_encode,
					o = e.info.fullpic_width,
					n = e.info.fullpic_height,
					s = e.info.pic_water ? e.info.pic_water.replace(/http:\/\/imgsrc/, "https://imgsa") : e.info.pic_water,
					d = t.find("img")[0];
				d.src = "/tb/static-common/editor_img/layer/i.gif", t.removeClass("uploading").addClass("complete"), t.data("picEncode", r), t.data("url", i.ORIGINAL_PIC_URL_PREFIX + r + ".jpg"), t.data("waterUrl", s), t.data("width", o), t.data("height", n);
				var l = new Image;
				l.onload = function() {
					d.style.backgroundImage = "url(" + i.THUMBNAIL_PIC_URL_PREFIX + r + ".jpg)", (l.width < 120 || l.height < 120) && (d.style.backgroundSize = "auto"), a.parent().hide()
				}, l.src = i.THUMBNAIL_PIC_URL_PREFIX + r + ".jpg", (new Image).src = i.ORIGINAL_PIC_URL_PREFIX + r + ".jpg", s && ((new Image).src = s)
			} else i.errorHandler(t.find("img")), a.parent().hide()
		},
		errorHandler: function(e) {
			e.tbattr("src", "/tb/static-common/editor_img/layer/upload_fail.png");
			var t = e.parent();
			t.removeClass("uploading").addClass("i_up_error")
		},
		deduplicate: function(e) {
			for(var t, i = [], a = [], r = 0; t = e[r]; r++) {
				var o = t.name + t.size;
				this.uploadingImageMark[o] ? a.push(t) : (i.push(t), this.uploadingImageMark[o] = !0)
			}
			return {
				allowed: i,
				duplicate: a
			}
		},
		renderContinueUpload: function() {
			var e = this.getRemainingNumber(),
				t = "";
			return 0 == e && (t = "i_upload_limit"), '<a class="add_more ' + t + '"><div class="add_more_button"></div><span class="i_image_remain">\u8fd8\u53ef\u4ee5\u6dfb\u52a0<span class="j_image_num">' + (e == Number.MAX_VALUE ? "\u65e0\u9650" : e) + "</span>\u5f20</span></a>"
		},
		renderImageList: function(e) {
			var t = this;
			if(t.dialog) {
				if(e.length > 0) {
					var i = t.generateImages(e, "continue");
					t.$continueUploader.before(i), $.browser.msie && $.browser.version < 8 || (t.scrollPanel._resizeHeight(), t.scrollPanel.scrollTopTo(2e4)), t.updateRemainingNumber(t.$root, function() {
						t.$continueUploader.addClass("i_upload_limit")
					}, function() {
						t.$continueUploader.removeClass("i_upload_limit")
					})
				}
			} else this.initDialog(e)
		},
		updateRemainingNumber: function(e, t, i) {
			var a = this,
				r = a.getRemainingNumber();
			e.find(".j_image_num").html(r), 0 == r ? t() : i()
		},
		initDialog: function(e) {
			var t = this;
			t.$root = $('<div class="picture_selector_container"></div>'), t.$imageContainer = $('<div class="ps_image_container clearfix"></div>'), t.$waterImageSelecter = $('<div class="water_image_selecter clearfix"></div>'), t.isrollback() && t.$imageContainer.css("height", 395);
			var i = t.generateImages(e, "first");
			if(t.$imageContainer.on("click", ".close", function() {
					var e = $(this).parent(),
						i = e.data("name"),
						a = e.data("size"),
						r = e.data("id"),
						o = e.data("uptype");
					try {
						"first" == o ? t.uploader.deleteFile(r) : "continue" == o && t.conUploader.deleteFile(r)
					} catch(n) {}
					t.uploadingImageMark[i + a] = !1, e.remove(), t.updateRemainingNumber(t.$root, function() {
						t.$continueUploader.addClass("i_upload_limit")
					}, function() {
						t.$continueUploader.removeClass("i_upload_limit")
					})
				}), t.layerBottom = t.generateDialogFooter(), t.isrollback() ? t.$root.append(t.$imageContainer).append(t.layerBottom) : t.$root.append(t.$imageContainer).append(t.$waterImageSelecter).append(t.layerBottom), t.dialog = new $.dialog({
					html: t.$root,
					title: t.DIALOG_TITLE,
					width: t.layerWidth,
					height: t.layerHeight,
					show: !1,
					closeable: !0,
					scrollable: !1
				}), $(t.dialog.element).find(".dialogJcontent").css("padding", 0), t.dialog.bind("onclose", function() {
					if(t.pictureEditorOpen) return t.hidePictureEditor(), !1;
					try {
						t.uploader && t.uploader.stopUpload(), t.uploader && t.uploader.clearList(), t.conUploader && t.conUploader.stopUpload(), t.conUploader && t.conUploader.clearList()
					} catch(e) {}
					t.destroy(), t.trigger("close")
				}), t.uploader.uploader.flash) {
				var a = t.dialog.element;
				t.dialog.element = t.dialog.element.add(t.uploader.uploader.flash.parentNode), t.dialog.show(), t.dialog.element = a
			} else t.dialog.show();
			t.isrollback() || t.initWaterImageEditor(), t.trigger("open"), $.browser.msie && $.browser.version < 8 ? (t.$imageContainer.html(i), t.$imageContainer.append(t.renderContinueUpload()), t.$continueUploader = t.$imageContainer.find(".add_more"), t.addContinueUploader(), t.$imageContainer.sortable({
				items: ".picture_item",
				scroll: !1
			})) : (t.scrollPanel = t.requireInstance("tbui/widget/scroll_panel", {
				container: t.$imageContainer,
				height: t.isrollback() ? 388 : 288,
				content: i
			}), t.scrollPanel.appendContent(t.renderContinueUpload()), t.$continueUploader = t.$imageContainer.find(".add_more"), t.addContinueUploader(), t.$root.find(".j_panel_content").sortable({
				items: ".picture_item",
				scroll: !1
			})), t.initPictureEditor()
		},
		initPictureEditor: function() {
			var e = this;
			e.$pictureEditorContainer = $("<div class='picture_editor_container' id='picture_editor_container'></div>"), e.$root.append(e.$pictureEditorContainer), this.pictureEditor = this.requireInstance("tbui/widget/image_flash_editor", [{
				container: e.$pictureEditorContainer,
				width: 678,
				height: 461
			}, {
				uploadURL: "https://uploadphotos.baidu.com/upload/pic?tbs=4f165305af36ccdc013751701760125500_1&fid=" + e.options.forumId
			}]), this.$imageContainer.on("click", ".j_editor_button", function() {
				$.stats.track("image_beauty", "ueditor", "frs", "click");
				var t = $(this).closest(".picture_item");
				e.showPictureEditor(t)
			}), this.pictureEditor.bind("upload_complete", function(t, i) {
				e.hidePictureEditor(), e.renderItem(i, e.pictureEditor.$item)
			}), this.pictureEditor.bind("cancel", function() {
				e.hidePictureEditor()
			})
		},
		initWaterImageEditor: function() {
			var e = this,
				t = this.requireInstance("ueditor/widget/slide_select", {
					wrap: this.$waterImageSelecter,
					props: this.options.props,
					propsCategory: 103,
					dataArr: [{
						key: "1039999",
						title: "\u65e0\u6c34\u5370",
						extendClass: "no_water"
					}, {
						key: "1039998",
						title: "\u8d34\u5427\u6c34\u5370"
					}, {
						key: "1030001",
						title: "\u6211\u7684\u6c34\u5370"
					}, {
						key: "1030002",
						title: "\u5341\u5e74\u6709\u6211"
					}],
					showSlide: !1,
					wrapCss: {
						"margin-left": 114
					},
					navPrevCss: {
						left: 26
					},
					navNextCss: {
						left: 626
					}
				});
			this.insertImageTip = $(".insert_image_tip"), t.initCarouse();
			var i = $(".water_image_selecter .slide_list");
			i.on("click", ".slide_item", function() {
				$(this).find(".need_buy_link").length > 0 || (i.find(".slide_item").removeClass("slide_item_active"), $(this).addClass("slide_item_active"), e.waterType = $(this).data("key"), $.tb.Storage.set("tbWaterType", e.waterType))
			});
			var a = (setTimeout(function() {
				i.find(".no_water").trigger("click")
			}, 200), $.tb.Storage.get("tbWaterType"));
			a && (e.waterType = a)
		},
		showPictureEditor: function(e) {
			this.pictureEditorOpen = !0, this.dialog.setTitle("\u56fe\u7247\u7f16\u8f91"), this.pictureEditor.$item = e, this.pictureEditor.loadRemoteImage(e.data("url")), this.$pictureEditorContainer.animate({
				left: -1
			}, this.PICTURE_EDITOR_ANIMATE_DURATION)
		},
		hidePictureEditor: function() {
			this.pictureEditorOpen = !1, this.dialog.setTitle(this.DIALOG_TITLE), this.$pictureEditorContainer.animate({
				left: 684
			}, this.PICTURE_EDITOR_ANIMATE_DURATION)
		},
		generateDialogFooter: function() {
			var e = this,
				t = ['<div class="dialog_footer">', e.isrollback() ? '<div class="watermark_options"><label><input checked type="checkbox" /> \u6dfb\u52a0\u672c\u5427\u6c34\u5370(gif\u683c\u5f0f\u6216\u8fc7\u5c0f\u7684\u56fe\u7247\u65e0\u6cd5\u6dfb\u52a0)</label></div>' : '<div class="watermark_options">*gif\u683c\u5f0f\u6216\u8fc7\u5c0f\u7684\u56fe\u7247\u65e0\u6cd5\u6dfb\u52a0\u6c34\u5370</div><div class="insert_image_tip">\u6c34\u5370\u6dfb\u52a0\u5931\u8d25</div>', '<div class="i_layer_btn">', '<a href="#" style="float:left;margin-right:10px;" class="btn_default btn_middle ok_button">\u63d2\u5165\u56fe\u7247</a>', '<a href="#" style="float:left" class="btn_sub btn_middle cancel_button">\u53d6 \u6d88</a>', "</div>", "</div>"].join(""),
				i = $(t),
				a = "true" == $.tb.Storage.get("watermark");
			return a || i.find(":checkbox").tbprop("checked", !1), i.find(".ok_button").click(function() {
				return e.submit(), e.isrollback() && e.dialog.close(), !1
			}), i.find(".cancel_button").click(function() {
				return e.dialog.close(), !1
			}), i
		},
		generateImages: function(e, t) {
			for(var i, a = [], r = 0; i = e[r]; r++) i.uptype = t, a.push($.tb.format('<a href="javascript:void(0);" title="\u62d6\u62fd\u8c03\u6574\u6392\u5e8f" unselectable="on" class="uploading picture_item"  data-name="#{name}" data-uptype="#{uptype}" data-size="#{size}" data-id="#{id}" draggable="true"><img class="i_item_bg" src="/tb/static-common/editor_img/layer/unload.png"><span class="progress"><b></b></span><span class="close" title="\u5220\u9664\u6b64\u56fe"></span><span class="error">\u4e0a\u4f20\u5931\u8d25</span></a>', i));
			return a.join("")
		},
		addContinueUploader: function() {
			this.conUploader = this.initUploader(this.$continueUploader.find(".add_more_button"))
		},
		destroy: function() {
			this.$root.remove(), this.$root = null
		},
		getInsertImageData: function(e) {
			var t = [];
			return this.getImageList().filter(".complete").each(function() {
				var i = $(this),
					a = {},
					r = i.data("url"),
					o = i.data("waterUrl");
				a.url = "1" == e && o ? o : r, a.width = i.data("width") || 0, a.height = i.data("height") || 0, a.picType = 0, t.push(a)
			}), t
		},
		_getInsertImageData: function(e, t) {
			var i = this,
				a = null,
				r = [];
			this.getImageList().filter(".complete").each(function() {
				var i = $(this),
					a = {},
					o = i.data("url"),
					n = $(this).data("picEncode");
				t && t[n] ? (a.url = t[n].water_url2, a.ptype = 1) : a.url = 1039998 == e && i.data("waterUrl") ? i.data("waterUrl") : o, a.width = i.data("width") || 0, a.height = i.data("height") || 0, a.picType = 0, r.push(a)
			}), t ? (this.insertImageTip.addClass("loading_water_image").text("\u6c34\u5370\u751f\u6210\u4e2d").show(), a = setTimeout(function() {
				i.trigger("ok", r), i.dialog.close()
			}, 2e3)) : (this.trigger("ok", r), this.dialog.close())
		},
		getImageData: function() {
			var e = this,
				t = this.waterType;
			if(1039999 == t || 1039998 == t) return this._getInsertImageData(t), void 0;
			var i = "/tbscore/waterurl",
				a = {
					props_category: 103,
					props_id: t,
					tbs: this.options.tbs,
					pic_arr: {}
				};
			this.getImageList().filter(".complete").each(function() {
				var e = $(this).data(),
					t = e.picEncode,
					i = e.width || 0,
					r = e.height || 0;
				a.pic_arr[t] = {
					width: i,
					height: r
				}
			}), $.tb.post(i, a, function(i) {
				return 0 != i.no ? (e.insertImageTip.show(), $(".water_image_selecter .no_water").trigger("click"), void 0) : (e._getInsertImageData(t, i.data), void 0)
			})
		},
		submit: function() {
			if(this.isrollback()) {
				var e = this.layerBottom.find(":checkbox")[0],
					t = e.checked;
				$.tb.Storage.set("watermark", t);
				var i = this.getInsertImageData(t);
				this.trigger("ok", i)
			} else this.getImageData()
		}
	}
});